0Pricing
Coding Interview Prep · Aula

Precedência de AND/OR e uso de parênteses

Conheça o erro de filtragem mais comum que os entrevistadores inserem nas perguntas.

Precedência de AND/OR e uso de parênteses é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding Interview Prep inclui 4 aulas no total.

A armadilha que os entrevistadores preparam

O erro de filtragem mais comum em entrevistas parece correto à primeira vista. A solicitação é: encontre os pedidos do cliente 5 que estejam pendentes ou enviados. O candidato escreve um WHERE misturando AND e OR e obtém linhas extras.

Por quê? Porque AND tem precedência maior que OR. O banco de dados avalia primeiro todos os pares de AND e depois os OR. Esta lição torna essa regra automática, para que você nunca perca pontos por causa dela.

Precedência dos operadores em uma frase

Em todo dialeto SQL, os operadores lógicos são avaliados nesta ordem: NOT primeiro, depois AND e, por último, OR.

  • NOT tem a precedência mais alta
  • AND tem precedência intermediária
  • OR tem a precedência mais baixa

Assim, A OR B AND C é interpretado como A OR (B AND C), nunca como (A OR B) AND C. O entrevistador conta que você se esqueça disso.

A consulta com erro

Esta é a consulta que um candidato escreve para cliente 5, status pendente ou enviado. Ela parece correta, mas está errada.

Como AND tem precedência maior, o SQL a interpreta como (customer_id = 5 AND status = 'pending') OR status = 'shipped'. O segundo ramo não tem filtro de cliente algum, portanto retorna pedidos enviados de todos os clientes.

SELECT *
FROM orders
WHERE customer_id = 5
  AND status = 'pending'
  OR status = 'shipped';

A correção: parênteses

Coloque o ramo de OR entre parênteses para que o filtro de cliente se aplique aos dois status. Os parênteses substituem a precedência e tornam a intenção explícita.

Agora o SQL avalia primeiro o OR agrupado e depois aplica customer_id = 5 ao grupo inteiro. Revisores experientes adicionam parênteses mesmo quando a precedência já produz o resultado correto, apenas para melhorar a legibilidade.

SELECT *
FROM orders
WHERE customer_id = 5
  AND (status = 'pending' OR status = 'shipped');

Percorrendo a tabela-verdade

Considere um pedido enviado do cliente 9. Acompanhe a versão com erro:

  • customer_id = 5 é falso
  • status = 'pending' é falso
  • false AND false é falso
  • false OR (status = 'shipped' is true) é verdadeiro

A linha é retornada mesmo não sendo do cliente 5. Explicar em voz alta o percurso de uma linha concreta é exatamente o que os entrevistadores querem ver.

NOT tem a maior precedência

NOT se aplica somente à condição imediatamente posterior. Portanto, NOT status = 'open' AND priority = 'high' significa (NOT status = 'open') AND priority = 'high'.

Se a intenção era negar tudo, você deve usar parênteses: NOT (status = 'open' AND priority = 'high'). Pela lei de De Morgan, isso equivale a status <> 'open' OR priority <> 'high'.

SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');

Um exemplo com três condições

Encontre produtos que sejam (eletrônicos ou eletrodomésticos) e estejam em estoque. Sem os parênteses, o filtro de estoque se aplicaria apenas aos eletrodomésticos.

A consulta agrupada abaixo é fácil de ler: escolha uma de duas categorias e, em seguida, exija que haja estoque. Regra prática: sempre que uma consulta combinar AND com OR, quase sempre será necessário colocar parênteses ao redor do grupo com OR.

SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
  AND in_stock = true;

IN como alternativa mais clara

Uma longa sequência de OR na mesma coluna é propensa a erros e verbosa. Substitua-a por IN, que é inequívoco e não precisa de parênteses.

A consulta abaixo é exatamente equivalente à anterior, mas é mais difícil de errar. Entrevistadores gostam de ver essa refatoração porque ela demonstra que você entende tanto de correção quanto de legibilidade.

SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
  AND in_stock = true;

Precedência em filtros calculados

A precedência também se aplica quando aritmética e lógica se misturam. Em price * 1.2 > 100 OR discount = 0 AND active = true, a comparação e a aritmética são resolvidas primeiro, depois AND e, por fim, OR.

Assim, a leitura é (price * 1.2 > 100) OR ((discount = 0) AND (active = true)). Quando houver dúvida, não tente memorizar a tabela sob pressão; basta colocar parênteses em cada grupo.

Como responder na hora

Quando um entrevistador mostrar um filtro misto de AND/OR e perguntar o que isso retorna, faça três coisas:

  • Declare a regra de precedência: AND antes de OR
  • Reescreva a consulta com parênteses em voz alta para revelar seu agrupamento real
  • Acompanhe uma linha que revele o erro

Depois, apresente a versão corrigida e com parênteses. Essa sequência demonstra rigor de nível sênior.

Hábito defensivo

O hábito profissional é: coloque parênteses em todo grupo com OR, sempre. Isso custa dois caracteres e elimina uma categoria inteira de erros e comentários de revisão.

Revisores de código nunca deveriam precisar avaliar mentalmente a precedência para confirmar que um filtro está correto. Torne o agrupamento visível. Este é um dos poucos casos em que a sintaxe redundante é considerada uma boa prática por todos.

SELECT order_id, status
FROM orders
WHERE customer_id = 5
  AND (status = 'pending' OR status = 'shipped');

Verificação rápida

Pense na regra de precedência antes de responder.

Resumo

Principais conclusões:

  • A precedência lógica é NOT, depois AND, depois OR
  • Filtros que misturam AND/OR quase sempre precisam de parênteses ao redor do grupo com OR
  • A ausência de um parêntese amplia os resultados silenciosamente, muitas vezes eliminando completamente um filtro
  • Substitua sequências longas de OR em uma coluna por IN
  • Para responder na hora: declare a regra, recoloque os parênteses, acompanhe uma linha e depois corrija

Coloque sempre parênteses nos grupos com OR, mesmo quando a precedência já produzir o resultado esperado.

Perguntas Frequentes

A aula “Precedência de AND/OR e uso de parênteses” é grátis?

Sim — o texto completo de “Precedência de AND/OR e uso de parênteses” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding Interview Prep inclui 4 aulas no total.

O que vou aprender em “Precedência de AND/OR e uso de parênteses”?

Conheça o erro de filtragem mais comum que os entrevistadores inserem nas perguntas. Você pratica Coding Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Coding Interview Prep?

Nenhuma experiência prévia é necessária. Coding Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Precedência de AND/OR e uso de parênteses”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Coding Interview Prep?

Sim. Cada aula de Coding Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Precedência de AND/OR e uso de parênteses
  2. BETWEEN, IN e limites inclusivos
  3. LIKE, curingas e escape
  4. Filtrando por valores calculados
← Voltar para Coding Interview Prep