Приоритет операторов определяет порядок, в котором операторы выполняются. Операторы с более высоким приоритетом выполняются первыми.

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

Ассоциативность определяет порядок, в котором обрабатываются операторы с одинаковым приоритетом. Например, рассмотрим выражение:

a OP b OP c

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

a = b = 5;

с ожидаемым результатом, что a и b будут равны 5. Это происходит, потому что оператор присваивания возвращает тот результат, который присваивает. Сначала b становится равным 5, затем a принимает значение b.

Таблица

Данная таблица упорядочена с самого высокого приоритета (20) до самого низкого (1).

Приоритет Тип оператора Ассоциативность Конкретные операторы
20 Группировка не определено ( … )
19 Доступ к свойствам слева направо … . …
Доступ к свойствам с возможностью вычисления слева направо … [ … ]
new (со списком аргументов) неопределено new … ( … )
Вызов функции слева направо … ( )
18 new (без списка аргументов) справа налево new …
17 Постфиксный инкремент не определено … ++
Постфиксный декремент … --
16 Логическое отрицание справа налево ! …
Побитовое отрицание ~ …
Унарный плюс + …
Унарный минус - …
Префиксный инкремент ++ …
Префиксный декремент -- …
typeof typeof …
void void …
delete delete …
await await …
15 Возведение в степень справа налево … ** …
14 Умножение слева направо … * …
Деление … / …
Остаток … % …
13 Сложение слева направо … + …
Вычитание … - …
12 Побитовый сдвиг влево слева направо … << …
Побитовый сдвиг вправо … >> …
Сдвиг вправо с заполнением нулей … >>> …
11 Меньше слева направо … < …
Меньше или равно … <= …
Больше … > …
Больше или равно … >= …
in … in …
instanceof … instanceof …
10 Равно слева направо … == …
Не равно … != …
Строго равно … === …
Строго не равно … !== …
9 Побитовое «И» слева направо … & …
8 Побитовое исключающее «ИЛИ» слева направо … ^ …
7 Побитовое «ИЛИ» слева направо … | …
6 Логическое «И» слева направо … && …
5 Логическое «ИЛИ» слева направо … || …
4 Условный справа налево … ? … : …
3 Присваивание справа налево … = …
… += …
… -= …
… **= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
2 yield справа налево yield …
yield* yield* …
1 Запятая / Последовательность слева направо … , …

Метки документа и участники

Внесли вклад в эту страницу: Walter-Bishop, Ihor92, BychekRU, Aleksej, fscholz, mcmimik, teoli, TotalAMD, hazestalker
Обновлялась последний раз: Walter-Bishop,