Dúvida persistente com Left e Right outer joins

Olá a todos!

Estou com uma dúvida que ainda persiste na minha cabeça… li muito sobre left e right join e ainda não consigo entender como funciona. Entendo sua teoria, mas a sintaxe de como é executada ainda não entra na minha cabeça… :stuck_out_tongue:

seguinte, vou dar como base o tutorial que existe no DevMedia:
http://www.devmedia.com.br/articles/viewcomp.asp?comp=2507
http://www.devmedia.com.br/articles/viewcomp.asp?comp=2524&hl=join

Onde existem as tabelas produto e vendas, conforme figura abaixo:

e as sintaxes dos dois joins:

select produtos_vendidos_sem_cadastro = v.cod_produto from produto p right outer JOIN venda v on v.cod_produto = p.cod_produto where p.cod_ produto is null

select produtos_com_cadastro_sem_venda = p.cod_produto from produto p left outer JOIN venda v on v.cod_produto = p.cod_produto where v.cod_produto is null

A minha dúvida é: qual o porquê da cláusula "on v.cod_produto = p.cod_produto " em ambos os joins, se eles procuram isolar tanto resultados da direita e da esquerda? Não faz sentido pra mim afirmar isso na query, apesar de saber que só assim funciona :stuck_out_tongue:

alguém pode me explicar o porquê?

Grato :P!