0Pricing
Coding Interview Prep · Leçon

Priorité de AND et OR et usage des parenthèses

Le piège de filtrage le plus courant que les recruteurs intègrent à leurs questions

Priorité de AND et OR et usage des parenthèses est une leçon Coding Interview Prep gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Coding Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Coding Interview Prep comprend 4 leçons au total.

Le piège préparé par les recruteurs

Le bug de filtrage le plus courant lors des entretiens semble correct au premier regard. On vous demande : trouver les commandes du client 5 qui sont soit en attente, soit expédiées. Un candidat écrit un WHERE mélangeant AND et OR, et obtient des lignes supplémentaires.

Pourquoi ? Parce que AND a une priorité supérieure à OR. La base de données évalue d’abord toutes les paires de AND, puis les OR. Cette leçon rend cette règle automatique afin que vous ne perdiez jamais de points à cause d’elle.

La priorité des opérateurs en une phrase

Dans tous les dialectes SQL, les opérateurs logiques sont évalués dans cet ordre : NOT d’abord, puis AND, et enfin OR.

  • NOT a la priorité la plus élevée
  • AND a une priorité intermédiaire
  • OR a la priorité la plus faible

Ainsi, A OR B AND C se lit A OR (B AND C), et jamais (A OR B) AND C. Le recruteur compte sur le fait que vous l’oublierez.

La requête incorrecte

Voici la requête qu’un candidat écrit pour le client 5, avec un statut en attente ou expédié. Elle semble correcte, mais elle est fausse.

Comme AND a une priorité supérieure, SQL la lit ainsi : (customer_id = 5 AND status = 'pending') OR status = 'shipped'. La seconde branche ne comporte aucun filtre sur le client, et renvoie donc les commandes expédiées de tous les clients.

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

La solution : les parenthèses

Entourez la branche OR de parenthèses afin que le filtre sur le client s’applique aux deux statuts. Les parenthèses prennent le dessus sur la priorité et rendent l’intention explicite.

SQL évalue alors d’abord le OR regroupé, puis applique customer_id = 5 à l’ensemble du groupe. Les personnes qui relisent du code à un niveau avancé ajoutent des parenthèses même lorsque la priorité produit déjà le bon résultat, uniquement pour améliorer la lisibilité.

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

Parcourir la table de vérité

Prenez une commande expédiée du client 9. Suivez la version incorrecte :

  • customer_id = 5 est false
  • status = 'pending' est false
  • false AND false est false
  • false OR (status = 'shipped' is true) est true

La ligne est renvoyée alors qu’elle ne concerne pas le client 5. Décrire à voix haute le parcours d’une ligne concrète est exactement ce que les recruteurs veulent voir.

NOT a la priorité la plus élevée

NOT s’applique uniquement à la condition qui le suit immédiatement. Ainsi, NOT status = 'open' AND priority = 'high' signifie (NOT status = 'open') AND priority = 'high'.

Si vous vouliez nier l’ensemble, vous devez utiliser des parenthèses : NOT (status = 'open' AND priority = 'high'). D’après les lois de De Morgan, cela équivaut à status <> 'open' OR priority <> 'high'.

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

Un exemple à trois conditions

Trouvez des produits qui appartiennent aux catégories (électronique ou électroménager) et qui sont en stock. Sans parenthèses, le filtre « en stock » ne s'appliquerait qu'aux appareils électroménagers.

La requête regroupée ci-dessous se lit clairement : choisissez l'une des deux catégories, puis exigez que le produit soit en stock. La règle à retenir : lorsqu'une requête mélange AND et OR, il faut presque toujours mettre le groupe OR entre parenthèses.

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

IN, une alternative plus claire

Une longue chaîne de OR sur la même colonne est à la fois source d'erreurs et verbeuse. Remplacez-la par IN, qui est sans ambiguïté et ne nécessite aucune parenthèse.

La requête ci-dessous est strictement équivalente à la précédente, mais moins susceptible d'être mal modifiée. Les recruteurs apprécient cette réécriture, car elle montre que vous comprenez à la fois la justesse et la lisibilité.

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

Priorité d'évaluation dans les filtres calculés

La priorité s'applique également lorsque l'arithmétique et la logique se mélangent. Dans price * 1.2 > 100 OR discount = 0 AND active = true, l'arithmétique et la comparaison sont d'abord évaluées, puis AND, puis OR.

La requête se lit donc (price * 1.2 > 100) OR ((discount = 0) AND (active = true)). En cas de doute, ne mémorisez pas le tableau sous pression : mettez simplement chaque groupe entre parenthèses.

Comment y répondre en direct

Lorsqu'un recruteur vous montre un filtre mêlant AND et OR et vous demande ce qu'il renvoie, faites trois choses :

  • Énoncez la règle de priorité : AND avant OR
  • Ajoutez oralement les parenthèses nécessaires pour révéler le véritable regroupement de la requête
  • Suivez une ligne qui met l'erreur en évidence

Proposez ensuite la version corrigée, avec ses parenthèses. Cette démarche témoigne d'une rigueur de niveau confirmé.

Réflexe défensif

L'habitude professionnelle à prendre est la suivante : mettez toujours chaque groupe OR entre parenthèses. Cela coûte deux caractères et élimine toute une catégorie de bogues et de commentaires de revue.

Les personnes qui relisent le code ne devraient jamais avoir à évaluer mentalement la priorité pour vérifier qu'un filtre est correct. Rendez le regroupement visible. C'est l'un des rares cas où une syntaxe redondante est considérée comme une bonne pratique par tout le monde.

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

Vérification rapide

Réfléchissez à la règle de priorité avant de répondre.

Récapitulatif

Points essentiels :

  • La priorité logique est NOT, puis AND, puis OR
  • Les filtres mêlant AND et OR nécessitent presque toujours des parenthèses autour du groupe OR
  • Une parenthèse manquante élargit silencieusement les résultats et supprime souvent entièrement un filtre
  • Remplacez les longues chaînes de OR sur une même colonne par IN
  • Pour répondre en direct : énoncez la règle, ajoutez les parenthèses, suivez une ligne, puis corrigez

Mettez toujours les groupes OR entre parenthèses, même lorsque la priorité produit déjà le résultat attendu.

Questions Fréquemment Posées

La leçon « Priorité de AND et OR et usage des parenthèses » est-elle gratuite ?

Oui — le texte complet de « Priorité de AND et OR et usage des parenthèses » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Coding Interview Prep, passe à CoddyKit PRO. Le cours Coding Interview Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Priorité de AND et OR et usage des parenthèses » ?

Le piège de filtrage le plus courant que les recruteurs intègrent à leurs questions Tu pratiques Coding Interview Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Coding Interview Prep ?

Aucune expérience préalable n'est requise. Coding Interview Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Priorité de AND et OR et usage des parenthèses » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Coding Interview Prep ?

Oui. Chaque leçon Coding Interview Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Priorité de AND et OR et usage des parenthèses
  2. BETWEEN, IN et limites inclusives
  3. LIKE, caractères génériques et échappement
  4. Filtrer sur des valeurs calculées
← Retour à Coding Interview Prep