Если видео недоступно для просмотра, попробуйте выключить блокировщик рекламы.

Важные заметки

Возведение в степень

Стандарт es7 вводит новый оператор **, полезный при возведении в степень:

2 ** 4; // 16
3 ** 2; // 9

Другой способ возвести число в степень:

Math.pow(2, 4); // 16
Math.pow(3, 2); // 9
Почему константы?

Возможно у вас возник вопрос: "почему константы, а не переменные?". Константы гораздо проще, чем переменные. Они всегда однозначно определены и никогда не меняются. В школе и в ВУЗе, в математике и физике мы имели дело только с константами.

В будущих уроках вы увидите, что единственное место, где требуются переменные — это циклы. Практически во всех других случаях они не нужны, и их присутствие усложняет код (мы объясним это позже в курсе).

Арность

Арность — это количество аргументов. Арность всех +, -, * и / составляет 2, поэтому мы можем называть эти операторы двоичными.

Есть ещё один оператор, который выглядит как двоичный минус, но он унарный (одинарный). Это когда - используется для обозначения отрицательного числа, например -327.

Ещё бывают тернарные (троичные) операторы, но вы их не часто встретите. Вы можете подробнее почитать об Арности в википедии.

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

Ассоциативность (или фиксированность) определяет, как операторы группируются при отсутствии скобок. Рассмотрим выражение a ~ b ~ c. Если у оператора ~ левая ассоциативность, это выражение будет трактоваться как (a ~ b) ~ c. Почитайте подробнее об ассоциативности в википедии.

Undefined

Рассмотрим следующий код:

const a;
console.log(a);

Что в этом случае выведется на экран? Современный JavaScript вообще не позволит вам создать константу без значения, но если позволит, полученный console.log выведет undefined. Это специальный идентификатор.

Вы можете установить значение undefined сами, вот таким способом:

const a = undefined;

Но самому этого делать не стоит.

Конспект урока

  • Математика в JavaScript выглядит и воспринимается как привычная математика:
    • Символы +, -, *, / означают то, что вы думаете.
    • Ещё есть символ % — остаток от деления. Он вычисляет остаток от деления первого операнда на второй. Например, 11%5 это 1, а 10%2 это 0.
    • Есть Infinity и -Infinity.
    • Когда вычисление оказывается не числом, JavaScript использует NaN, который означает "не число" (Not a Number). Например: 0/"word" это NaN
    • Если в вычислении присутствует NaN, то результатом всегда будет NaN. Например: 120 + 5 / NaN это NaN
  • Заставьте компьютер "помнить" что-нибудь, создав константу. Например: const age = 39;

Рекомендуем посмотреть

  • Floating Point Numbers - Computerphile. Отличное объяснение проблемы чисел с плавающей запятой (та странная проблема из видео-урока).

Рекомендуем почитать

Опционально


Транскрипт урока

Конечно, компьютеры отлично справляются с вычислениями чисел. И когда дело касается простой математики, JavaScript довольно прямолинеен. Есть пять основных операций: сложение, вычитание, умножение, деление и остаток от деления. Ещё есть скобки, как и в обычной математике, которые помогают явно указывать последовательность вычислений.

Взгляните на это: 25 * 91. 25 и 91 называются операндами, а звёздочка - оператором умножения.

Вот немного более усложнённый пример: ((12 * 5) - 4) / 12.

В начале JavaScript производит умножение, затем вычитает 4, поскольку есть скобки, а потом делит результат на 12.

Все операторы здесь инфиксные: они находятся между операндами (в данном случае — между числами). Ещё есть префиксные операторы (например, знак минус, который обозначает отрицательное число: -5) и постфиксные (например, быстрое увеличение на один: x++). Мы изучим их позже.

В какой-то момент вы столкнётесь с необычной проблемой: если вы попытаетесь сложить 0.1 + 0.2 в JavaScript, результатом будет 0.30000-много-много-нулей-4, а не 0.3. Это потому что компьютеры хранят числа в другом формате. Глубоко внутри все числа — это множество единиц и нулей, подчинённых определённым правилам и это не лучший формат для хранения любых чисел.

Это может показаться нелепым — почему мы позволяем компьютерам использовать такую плохую систему? На самом деле она не настолько плохая или глупая. Такой формат удобен для определённого набора задач и не слишком удобен для другого.

Также в JavaScript есть несколько терминов, которые нужны для формулировки определённых значений: разделите положительное число на 0 и получится "Бесконечность" — Infinity; разделите отрицательное число на 0 и получится "-Бесконечность" — -Infinity. В своих программах вы можете использовать Бесконечности как числа с другими операторами. Например, с Бесконечностью можно производить сложение.

Иногда вычисления не производят конкретного числа. Разделите 0 на строку и получится что-то не числовое. Нельзя сказать, что это ничто, это… просто не число. У JavaScript есть термин для такого понятия — NaN, который образован из "Not a Number" (не число).

Как и Бесконечность, NaN можно использовать в вычислениях с другими математическими операторами. Но Not a Number как бы всех подводит: если он присутствует в вычислении, результатом всегда будет NaN.

Вот случайный вопрос: какого размера Марс? Его радиус — 3390 километров, он почти в два раза меньше Земли. Но мы, конечно, заинтересованы там жить, поэтому нам важно сколько у нас будет поверхности. Другими словами, какая площадь поверхности у Марса?

Может вы помните формулу: площадь поверхности сферы равна 4πr2. r — это радиус, а π примерно 3.14.

Давайте вычислим это в JavaScript:

4 * 3.14 * 3390 * 3390;

Теперь представьте как вычислить площадь поверхности другой планеты. Например, Меркурия:

4 * 3.14 * 2440 * 2440;

Этот новый код точно такой же, как и предыдущий, изменился только радиус. Если мы продолжим в таком же стиле, нам понадобится писать значение π самим каждый раз. Так не пойдёт, мы не хотим повторений в своих программах.

Мы можем заставить компьютер "помнить", что такое π и использовать это в вычислениях. Такой механизм называется "константы". Давайте создадим новую константу со значением числа π:

const pi = 3.14;

const — это специальное ключевое слово, после него — идентификатор — название вашей константы, затем знак равенства и значение.

Теперь мы можем писать "pi" вместо того, чтобы вводить вручную 3.14.

4 * pi * 3390 * 3390; // surface area of Mars
4 * pi * 2440 * 2440; // surface area of Venus

Кстати, двойной слеш и текст после него — это комментарии: JavaScript просто игнорирует их и они не влияют на работу кода. Мы пишем комментарии для себя и других людей, чтобы легче понимать код.

Давайте поместим площадь поверхности Марса в другую константу:

const surface = 4 * pi * 3390 * 3390;

Теперь surface это другой идентификатор, в нём хранится результат вычисления. Тогда как это вычисление произвелось? Ну, во-первых, JavaScript должен вспомнить что такое pi, а потом заменить его на число, значение:

4 * pi * 3390 * 3390;
4 * 3.14 * 3390 * 3390;

А затем идут умножения слева направо, потому что у нас нет скобок:

4 * 3.14 * 3390 * 3390;
12.56 * 3390 * 3390;
42578.4 * 3390;
144340776;

Мы можем вывести результат на экран с console.log: console.log(surface). Заметьте, что в этот раз мы не писали кавычки. Мы не будем выводить слово "surface". Это не строка. Мы выводим значение константы, называемой "surface".

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

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →