Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Арифметические операции Основы JavaScript

На базовом уровне компьютеры оперируют только числами. Даже в прикладных программах на высокоуровневых языках внутри много чисел и операций над ними. К счастью, для старта достаточно знать обычную арифметику — с неё и начнём.

Счётные палочки

Для сложения двух чисел в математике мы пишем, например, 3 + 4. В программировании — то же самое. Вот программа, складывающая два числа:

// Не забываем точку с запятой в конце,
// так как каждая строчка в коде – инструкция
3 + 4;

Инструкция 3 + 4; заставит компьютер сложить числа и узнать результат. Если запустить эту программу, то ничего не произойдёт. А если быть точными, то компьютер вычислит сумму, но на этом всё. Результат сложения никак не используется, и такая программа не представляет никакого интереса. Нам нужно попросить компьютер сложить 3 + 4 и дать команду сделать что-то с результатом. Например, вывести его на экран:

// Сначала вычисляется сумма,
// затем она передаётся в функцию печати
console.log(3 + 4); // => '7'

Всегда отбивайте арифметические операторы пробелами от самих чисел (операндов) – это хороший стиль программирования. Поэтому в наших примерах console.log(3 + 4), а не console.log(3+4).

Кроме сложения, доступны следующие операции:

Теперь давайте выведем на экран результат деления, а потом результат возведения в степень:

console.log(8 / 2);  // => 4
console.log(3 ** 2); // => 9

Первая инструкция выведет на экран 4 (потому что 8 / 2 это 4), а вторая инструкция выведет на экран 9 (потому что 32 это 9).

Операторы

Перед тем, как двигаться дальше, разберём базовую терминологию. Знак операции, такой как +, называют оператором. Операторы выполняют операции над определенными значениями, которые называются операндами. Сами операторы обычно представлены одним или несколькими символами. Реже словом. Подавляющее большинство операторов соответствуют математическим операциям.

console.log(8 + 2);

В этом примере + — это оператор, а числа 8 и 2 — это операнды.

В случае сложения у нас есть два операнда: один слева, другой справа от знака +. Операции, которые требуют наличия двух операндов, называются бинарными. Если пропустить хотя бы один операнд, например, 3 + ;, то программа завершится с синтаксической ошибкой.

Операции (не операторы) бывают не только бинарными, но и унарными (с одним операндом), и даже тернарными (с тремя операндами)! Причём операторы могут выглядеть одинаково, но обозначать разные операции.

console.log(-3); // => -3

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

Это немного может сбить с толку, потому что -3 — это одновременно и число само по себе, и оператор с операндом, но у языков программирования такая структура.

Коммутативная операция

Мы все помним со школы: «от перемены мест слагаемых сумма не меняется». Это один из базовых и интуитивно понятных законов арифметики, он называется коммутативным законом.

Бинарная операция считается коммутативной, если поменяв местами операнды, вы получаете тот же самый результат. Очевидно, что сложение — коммутативная операция: 3 + 2 = 2 + 3.

А вот является ли коммутативной операция вычитания? Конечно, нет: 2 - 3 ≠ 3 - 2. В программировании этот закон работает точно так же, как в арифметике.

Более того, большинство операций, с которыми мы будем сталкиваться в реальной жизни, не являются коммутативными. Отсюда вывод: всегда обращайте внимание на порядок того, с чем работаете.

Композиция операций

А что, если понадобится вычислить такое выражение: 3 * 5 - 2? Именно так мы и запишем:

console.log(3 * 5 - 2); // => 13

Обратите внимание, что интерпретатор производит арифметические вычисления в правильном порядке: сначала деление и умножение, потом сложение и вычитание. Иногда этот порядок нужно изменить — об этом поговорим дальше. Или другой пример:

console.log(2 * 4 * 5 * 10);

Как видно, операции можно соединять друг с другом, получая возможность вычислять всё более сложные составные выражения. Чтобы представить себе то, как происходят вычисления внутри интерпретатора, давайте разберем пример: 2 * 4 * 5 * 10.

  1. Сначала вычисляется 2 * 4 и получается выражение 8 * 5 * 10.
  2. Затем 8 * 5. В итоге имеем 40 * 10.
  3. В конце концов происходит последнее умножение, и получается результат 400.

Таким образом, интерпретатор соединяет сложные составные выражения, последовательно выполняя заложенные в них арифметические действия, по умолчанию соблюдая правильный порядок: сначала умножение и деление, затем — сложение и вычитание.

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

Посмотрите внимательно на выражение 2 + 2 * 2 и посчитайте в уме ответ.

Правильный ответ: 6. Если у вас получилось 8, то этот раздел для вас. В школьной математике мы изучали понятие «приоритет операции». Приоритет определяет то, в какой последовательности должны выполняться операции. Например, умножение и деление имеют больший приоритет, чем сложение и вычитание, а приоритет возведения в степень выше всех остальных арифметических операций: 2 ** 3 * 2 вычислится в 16.

Но нередко вычисления должны происходить в порядке, отличном от стандартного приоритета. В сложных ситуациях приоритет можно (и нужно) задавать круглыми скобками, точно так же, как в школе, например: (2 + 2) * 2.

Скобки можно ставить вокруг любой операции. Они могут вкладываться друг в друга сколько угодно раз. Вот пара примеров:

console.log(3 ** (4 - 2)); // => 9
console.log(7 * 3 + (4 / 2) - (8 + (2 - 1))); // => 14

Иногда выражение сложно воспринимать визуально. Тогда можно расставить скобки, не повлияв на приоритет. Например:

Было:

console.log(8 / 2 + 5 - -3 / 2); // => 10.5

Стало:

console.log(((8 / 2) + 5) - (-3 / 2)); // => 10.5

Запомните: код пишется для людей, потому что код будут читать люди, а машины будут только исполнять его. Для машин код — или корректный, или не корректный, для них нет «более» понятного или «менее» понятного кода.


Дополнительные материалы

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

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов для веб-приложений
6 октября 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов для веб-приложений
6 октября 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
6 октября 16 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и соглашаетесь с «Условиями использования»