Пріоритет операторів

Пріоритет операторів визначає, яким чином розбиратимуться оператори по відношенню один до одного. Оператори з вищим пріоритетом стають операндами операторів з нижчим пріоритетом.

Асоціативність

Асоціативність визначає те, яким чином розбираються оператори з однаковим пріоритетом. Наприклад, розглянемо вираз:

a OP b OP c

Лівоасоціативність (зліва направо) означає, що вони оброблятимуться як (a OP b) OP c, в той час як правоасоціативність (справа наліво) означає, що він буде інтерпретований як a OP (b OP c). Оператори присвоєння є правоасоціативними, отже, ви можете написати:

a = b = 5;

очікуючи, що a та b отримають значення 5. Все тому, що оператор присвоєння повертає значення, яке було присвоєне. Спочатку b присвоюється 5. Потім a також присвоюється 5, значення, яке повертається від b = 5, або правого операнду присвоєння.

Приклади

3 > 2 && 2 > 1
// вертає true

3 > 2 > 1
// вертає false, тому що 3 > 2 дорівнює true, а true > 1 дорівнює false
// Додавання дужок робить все зрозумілішим: (3 > 2) > 1

Таблиця

Ця таблиця впорядкована від найвищого (20) до найнижчого (1) пріоритету.

Пріоритет Тип оператора Асоціативність Окремі оператори
21 Grouping n/a ( … )
20 Member Access left-to-right … . …
Computed Member Access left-to-right … [ … ]
new (with argument list) n/a new … ( … )
Function Call left-to-right … ( )
Optional chaining left-to-right ?.
19 new (without argument list) right-to-left new …
18 Postfix Increment n/a … ++
Postfix Decrement … --
17 Logical NOT right-to-left ! …
Bitwise NOT ~ …
Unary Plus + …
Unary Negation - …
Prefix Increment ++ …
Prefix Decrement -- …
typeof typeof …
void void …
delete delete …
await await …
16 Exponentiation right-to-left … ** …
15 Multiplication left-to-right … * …
Division … / …
Remainder … % …
14 Addition left-to-right … + …
Subtraction … - …
13 Bitwise Left Shift left-to-right … << …
Bitwise Right Shift … >> …
Bitwise Unsigned Right Shift … >>> …
12 Less Than left-to-right … < …
Less Than Or Equal … <= …
Greater Than … > …
Greater Than Or Equal … >= …
in … in …
instanceof … instanceof …
11 Equality left-to-right … == …
Inequality … != …
Strict Equality … === …
Strict Inequality … !== …
10 Bitwise AND left-to-right … & …
9 Bitwise XOR left-to-right … ^ …
8 Bitwise OR left-to-right … | …
7 Nullish coalescing operator left-to-right … ?? …
6 Logical AND left-to-right … && …
5 Logical OR left-to-right … || …
4 Conditional right-to-left … ? … : …
3 Assignment right-to-left … = …
… += …
… -= …
… **= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
2 yield right-to-left yield …
yield* yield* …
1 Comma / Sequence left-to-right … , …