Приоритет выполнения операторов в JavaScript
Осветим вопрос приоритета выполнения основных операторов в JavaScript.
Все операторы делятся на группы, у которых различный приоритет. Те, у которых приоритет выше, выполняются первыми.
1 — Самым высоким приоритетом обладают операторы группировки. В данном случае это скобки «(» и «)»
i = (a + b) * c
( В данном случае группировка имеет более высокий приоритет чем умножение,
поэтому сначала выполнятся все операции внутри скобок )
2 — За ними следуют операторы постфиксного (указанного ПОСЛЕ переменной) инкремента и декремента
a-- // Постфиксный декремент
b++ // Постфиксный инкремент
3 — Следующими по приоритету идут префиксные инкремент и декремент а также логическое отрицание
--x // Префиксный декремент
++y // Префиксный инкремент
!z // Логическое отрицание
4 — За ними идет возведение в степень
x = y ** z // Возведение в степень
5 — Следующая группа: умножение, деление и остаток от деления
x = y * z // Умножение
x = y / z // Деление
x = y % z // Остаток от деления
6 — Еще меньшим приоритетом обладают операции сложения и вычитания
x = y + z // Сложение
x = y - z // Вычитание
7 — Следом идут операции сравнения
> // Больше
>= // Больше или равно
< // Меньше
<= // Меньше или равно
8 — Затем операции равенства
== // Равно
!= // Не равно
=== // Строго равно
!== // Строго не равно
9 — Логические операции
& // Побитовое И
| // Побитовое ИЛИ
&& // Логическое И
|| // Логическое ИЛИ
10 — И наконец последними выполняются операции присваивания
= // Присваивание
+= // Присваивание со сложением
-= // Присваивание с вычитанием
**= // Присваивание с возведением в степень
*= // Присваивание с умножением
/= // Присваивание с делением
%= // Присваивание с остатком от деления
Например при a = 3 , b = 6 и x = 2 выражение:
(x += (++a + b / a * b - ++b % x ** x)) === 11 + true;
даст нам true

