--- title: Précédence des opérateurs slug: Web/JavaScript/Reference/Opérateurs/Précédence_des_opérateurs tags: - JavaScript - Opérateur - Reference - precedence translation_of: Web/JavaScript/Reference/Operators/Operator_Precedence ---
{{jsSidebar("Operators")}}

La précédence des opérateurs détermine l'ordre dans lequel les opérateurs sont évalués. Les opérateurs avec la plus haute précédence sont évalués en premier.

Ainsi, l'opérateur de multiplication (« * ») (ayant une précédence plus haute que l'opérateur d'addition (« + »)) est évalué en premier et l'expression 6 * 4 + 2 renverra 26 (et pas 36).

{{EmbedInteractiveExample("pages/js/expressions-operatorprecedence.html")}}

Associativité

L'associativité détermine l'ordre dans lequel des opérateurs de même précédence sont évalués. Par exemple, considérons l'expression suivante :

a OP b OP c

Une associativité de gauche (gauche à droite) signifie qu'elle est évaluée comme (a OP b) OP c, tandis qu'une associativité de droite (droite à gauche) signifie qu'elle est interprétée comme a OP (b OP c). Les opérateurs d'affectation sont associatifs de droite, on peut donc écrire :

a = b = 5;

avec le résultat attendu que a et b obtiennent la même valeur de 5. C'est parce que l'opérateur d'affectation retourne la valeur qu'il affecte. D'abord, b est défini à la valeur 5. Ensuite, a est défini avec la valeur renvoyée par b = 5 qui est 5.

Exemples

3 > 2 && 2 > 1
// renvoie true

3 > 2 > 1
// renvoie false car 3 > 2 vaut true et que true > 1 vaut false
// En ajoutant des parenthèses, on y voit plus clair (3 > 2) > 1

Tableau

Le tableau suivant est classé de la plus haute (0) à la plus basse (19) précédence.

Précédence Type d'opérateur Associativité Opérateurs individuels
0 Groupement Non applicable ( … )
1 Accès à un membre Gauche à droite … . …
Accès à un membre calculé Gauche à droite … [ … ]
new (avec une liste d'arguments) Non applicable new … ( … )
Appel de fonction Gauche à droite … ( )
Chaînage optionnel Gauche à droite ?.
2 new (sans liste d'arguments) Droite à gauche new …
3 Incrémentation suffixe Non applicable … ++
Décrémentation suffixe Non applicable … --
4 NON logique Droite à gauche ! …
NON binaire Droite à gauche ~ …
Plus unaire Droite à gauche + …
Négation unaire Droite à gauche - …
Incrémentation préfixe Droite à gauche ++ …
Décrémentation préfixe Droite à gauche -- …
typeof Droite à gauche typeof …
void Droite à gauche void …
delete Droite à gauche delete …
await Droite à gauche await …
5 Exponentiation Droite à gauche … ** …
Multiplication Gauche à droite … * …
Division Gauche à droite … / …
Reste Gauche à droite … % …
6 Addition Gauche à droite … + …
Soustraction Gauche à droite … - …
7 Décalage binaire à gauche Gauche à droite … << …
Décalage binaire à droite Gauche à droite … >> …
Décalage binaire à droite non-signé Gauche à droite … >>> …
8 Inférieur strict Gauche à droite … < …
Inférieur ou égal Gauche à droite … <= …
Supérieur strict Gauche à droite … > …
Supérieur ou égal Gauche à droite … >= …
in Gauche à droite … in …
instanceof Gauche à droite … instanceof …
9 Égalité faible Gauche à droite … == …
Inégalité faible Gauche à droite … != …
Égalité stricte Gauche à droite … === …
Inégalité stricte Gauche à droite … !== …
10 ET binaire Gauche à droite … & …
11 OU exclusif (XOR) binaire Gauche à droite … ^ …
12 OU binaire Gauche à droite … | …
13 ET logique Gauche à droite … && …
14 OU logique Gauche à droite … || …
15 Opérateur conditionnel ternaire Droite à gauche … ? … : …
16 Affectation Droite à gauche … = …
… += …
… -= …
… *= …
… /= …
… **= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
17 yield Droite à gauche yield …
yield* Droite à gauche yield* …
18 Décomposition Non applicable ...
19 Virgule Gauche à droite … , …