Elementor Header #8

9 . Приоритет операций

В программировании порядок выполнения операций определяется приоритетом операторов. В JavaScript, как и в других языках программирования, некоторые операторы выполняются раньше других. Понимание приоритета операций позволяет правильно интерпретировать и вычислять сложные выражения.

Таблица приоритета операций

Вот таблица приоритета операций в JavaScript (в порядке убывания приоритета):

  1. Группировка: ( )
  2. Операторы доступа к свойствам: . и []
  3. Унарные операторы: ++, --, +, -, !, ~, typeof, void, delete
  4. Экспоненциальный оператор: **
  5. Операторы умножения и деления: *, /, %
  6. Операторы сложения и вычитания: +, -
  7. Сдвиговые операторы: <<, >>, >>>
  8. Операторы сравнения: <, <=, >, >=, in, instanceof
  9. Операторы равенства: ==, !=, ===, !==
  10. Побитовые операторы AND: &
  11. Побитовые операторы XOR: ^
  12. Побитовые операторы OR: |
  13. Логические операторы AND: &&
  14. Логические операторы OR: ||
  15. Условный (тернарный) оператор: ? :
  16. Операторы присваивания: =, +=, -=, *=, /=, %= и т.д.
  17. Операторы запятая: ,

Примеры использования приоритета операций

Арифметические операции

Рассмотрим пример с использованием арифметических операторов.

				
					let a = 10;
let b = 5;
let c = 2;

let result = a + b * c; // Приоритет умножения выше, чем сложения
console.log(result); // 20 (а не 30)

				
			
Логические операции

Логические операции также подчиняются правилам приоритета.

				
					let isTrue = true;
let isFalse = false;

let result = isTrue && isFalse || isTrue; // Приоритет у AND выше, чем у OR
console.log(result); // true

				
			
Использование скобок для изменения порядка операций

Скобки позволяют явно задавать порядок выполнения операций.

				
					let a = 10;
let b = 5;
let c = 2;

let result = (a + b) * c; // Скобки изменяют порядок выполнения операций
console.log(result); // 30 (а не 20)

				
			

Примеры использования приоритета операций

Пример 1: Сложное арифметическое выражение
				
					let x = 8;
let y = 4;
let z = 2;

let result = (x + y) * z / (x - y); // Скобки задают порядок выполнения операций
console.log(result); // 6

				
			
Пример 2: Логическое выражение с условным оператором
				
					let age = 20;
let hasID = true;
let isMember = false;

let canEnter = (age >= 18 && hasID) || isMember; // Приоритет у AND выше, чем у OR
console.log(canEnter); // true

				
			

Распространённые ошибки

  • Неправильный порядок операций: Не учитывая приоритет операций, можно получить неожиданный результат.

				
					let a = 5;
let b = 10;
let c = 2;

let result = a + b * c; // Ожидаемый результат: 25 (а не 30)
console.log(result); // 25

				
			

Решение: Используйте скобки для явного указания порядка операций.

				
					let result = (a + b) * c; // Правильный результат: 30
console.log(result); // 30

				
			
  • Отсутствие скобок в логических выражениях: Это может привести к неправильной интерпретации условий.
				
					let a = true;
let b = false;
let c = true;

let result = a && b || c; // Ожидаемый результат: true (а не false)
console.log(result); // true

				
			

Решение: Используйте скобки для группировки логических операций.

				
					let result = (a && b) || c; // Правильный результат: true
console.log(result); // true

				
			

Заключение

Понимание приоритета операций и использование скобок для явного задания порядка выполнения — ключевые навыки для написания корректного и предсказуемого кода в JavaScript. Эти знания помогут вам избежать ошибок и писать более понятный код.

Тестовое задание

Напишите код, который выполняет следующие действия:

  • Создаёт переменные a, b и c с любыми числовыми значениями.
  • Вычисляет выражение a + b * c - b / a.
  • Использует скобки для изменения порядка выполнения операций.
  • Выводит результаты вычислений в консоль.
				
					let a = 10;
let b = 5;
let c = 2;

// Без скобок
let result = a + b * c - b / a;
console.log(result); // Результат вычислений без скобок

// Со скобками
result = (a + b) * (c - b) / a;
console.log(result); // Результат вычислений со скобками

				
			

Напишите код, который проверяет логическое условие:

  • Создаёт переменные isAdult (boolean), hasID (boolean) и isMember (boolean).
  • Вычисляет логическое выражение isAdult && hasID || isMember.
  • Использует скобки для изменения порядка выполнения операций.
  • Выводит результаты вычислений в консоль.
				
					let isAdult = true;
let hasID = false;
let isMember = true;

// Без скобок
let canEnter = isAdult && hasID || isMember;
console.log(canEnter); // Результат без скобок

// Со скобками
canEnter = (isAdult && hasID) || isMember;
console.log(canEnter); // Результат со скобками

				
			
Этот урок поможет вам понять приоритет операций в JavaScript и использовать их для написания корректного и понятного кода.
logo