0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<h2>Транскрипт урока</h2>
1
<h2>Транскрипт урока</h2>
2
<p>Конечно, компьютеры отлично справляются с вычислениями чисел. И когда дело касается простой математики, JavaScript довольно прямолинеен. Есть пять основных операций: сложение, вычитание, умножение, деление и остаток от деления. Ещё есть скобки, как и в обычной математике, которые помогают явно указывать последовательность вычислений.</p>
2
<p>Конечно, компьютеры отлично справляются с вычислениями чисел. И когда дело касается простой математики, JavaScript довольно прямолинеен. Есть пять основных операций: сложение, вычитание, умножение, деление и остаток от деления. Ещё есть скобки, как и в обычной математике, которые помогают явно указывать последовательность вычислений.</p>
3
<p>Взгляните на это: 25 * 91. 25 и 91 называются<strong>операндами</strong>, а звёздочка -<strong>оператором</strong>умножения.</p>
3
<p>Взгляните на это: 25 * 91. 25 и 91 называются<strong>операндами</strong>, а звёздочка -<strong>оператором</strong>умножения.</p>
4
<p>Вот немного более усложнённый пример: ((12 * 5) - 4) / 12.</p>
4
<p>Вот немного более усложнённый пример: ((12 * 5) - 4) / 12.</p>
5
<p>В начале JavaScript производит умножение, затем вычитает 4, поскольку есть скобки, а потом делит результат на 12.</p>
5
<p>В начале JavaScript производит умножение, затем вычитает 4, поскольку есть скобки, а потом делит результат на 12.</p>
6
<p>Все операторы здесь<strong>инфиксные</strong>: они находятся между операндами (в данном случае - между числами). Ещё есть<strong>префиксные</strong>операторы (например, знак минус, который обозначает отрицательное число: -5) и<strong>постфиксные</strong>(например, быстрое увеличение на один: x++). Мы изучим их позже.</p>
6
<p>Все операторы здесь<strong>инфиксные</strong>: они находятся между операндами (в данном случае - между числами). Ещё есть<strong>префиксные</strong>операторы (например, знак минус, который обозначает отрицательное число: -5) и<strong>постфиксные</strong>(например, быстрое увеличение на один: x++). Мы изучим их позже.</p>
7
<p>В какой-то момент вы столкнётесь с необычной проблемой: если вы попытаетесь сложить 0.1 + 0.2 в JavaScript, результатом будет 0.30000-много-много-нулей-4, а не 0.3. Это потому что компьютеры хранят числа в другом формате. Глубоко внутри все числа - это множество единиц и нулей, подчинённых определённым правилам, и это не лучший формат для хранения любых чисел.</p>
7
<p>В какой-то момент вы столкнётесь с необычной проблемой: если вы попытаетесь сложить 0.1 + 0.2 в JavaScript, результатом будет 0.30000-много-много-нулей-4, а не 0.3. Это потому что компьютеры хранят числа в другом формате. Глубоко внутри все числа - это множество единиц и нулей, подчинённых определённым правилам, и это не лучший формат для хранения любых чисел.</p>
8
<p>Это может показаться нелепым - почему мы позволяем компьютерам использовать такую плохую систему? На самом деле она не настолько плохая или глупая. Такой формат удобен для определённого набора задач и не слишком удобен для другого.</p>
8
<p>Это может показаться нелепым - почему мы позволяем компьютерам использовать такую плохую систему? На самом деле она не настолько плохая или глупая. Такой формат удобен для определённого набора задач и не слишком удобен для другого.</p>
9
<p>Также в JavaScript есть несколько терминов, которые нужны для формулировки определённых значений: разделите положительное число на 0 и получится "Бесконечность" - Infinity; разделите отрицательное число на 0 и получится "-Бесконечность" - -Infinity. В своих программах вы можете использовать Бесконечности как числа с другими операторами. Например, с Бесконечностью можно производить сложение.</p>
9
<p>Также в JavaScript есть несколько терминов, которые нужны для формулировки определённых значений: разделите положительное число на 0 и получится "Бесконечность" - Infinity; разделите отрицательное число на 0 и получится "-Бесконечность" - -Infinity. В своих программах вы можете использовать Бесконечности как числа с другими операторами. Например, с Бесконечностью можно производить сложение.</p>
10
<p>Иногда вычисления не производят конкретного числа. Разделите 0 на строку и получится что-то не числовое. Нельзя сказать, что это ничто, это… просто не число. У JavaScript есть термин для такого понятия - NaN, который образован из "Not a Number" (не число).</p>
10
<p>Иногда вычисления не производят конкретного числа. Разделите 0 на строку и получится что-то не числовое. Нельзя сказать, что это ничто, это… просто не число. У JavaScript есть термин для такого понятия - NaN, который образован из "Not a Number" (не число).</p>
11
<p>Как и Бесконечность, NaN можно использовать в вычислениях с другими математическими операторами. Но Not a Number как бы всех подводит: если он присутствует в вычислении, результатом всегда будет NaN.</p>
11
<p>Как и Бесконечность, NaN можно использовать в вычислениях с другими математическими операторами. Но Not a Number как бы всех подводит: если он присутствует в вычислении, результатом всегда будет NaN.</p>
12
<p>Вот случайный вопрос: какого размера Марс? Его радиус - 3390 километров, он почти в два раза меньше Земли. Но мы, конечно, заинтересованы там жить, поэтому нам важно, сколько у нас будет поверхности. Другими словами, какая площадь поверхности у Марса?</p>
12
<p>Вот случайный вопрос: какого размера Марс? Его радиус - 3390 километров, он почти в два раза меньше Земли. Но мы, конечно, заинтересованы там жить, поэтому нам важно, сколько у нас будет поверхности. Другими словами, какая площадь поверхности у Марса?</p>
13
<p>Может, вы помните формулу: площадь поверхности сферы равна 4πr^2^. r - это радиус, а π примерно 3.14.</p>
13
<p>Может, вы помните формулу: площадь поверхности сферы равна 4πr^2^. r - это радиус, а π примерно 3.14.</p>
14
<p>Давайте вычислим это в JavaScript:</p>
14
<p>Давайте вычислим это в JavaScript:</p>
15
<p>Теперь представьте как вычислить площадь поверхности другой планеты. Например, Меркурия:</p>
15
<p>Теперь представьте как вычислить площадь поверхности другой планеты. Например, Меркурия:</p>
16
<p>Этот новый код точно такой же, как и предыдущий, изменился только радиус. Если мы продолжим в таком же стиле, нам понадобится писать значение π самим каждый раз. Так не пойдёт, мы не хотим повторений в своих программах.</p>
16
<p>Этот новый код точно такой же, как и предыдущий, изменился только радиус. Если мы продолжим в таком же стиле, нам понадобится писать значение π самим каждый раз. Так не пойдёт, мы не хотим повторений в своих программах.</p>
17
<p>Мы можем заставить компьютер "помнить", что такое π и использовать это в вычислениях. Такой механизм называется "константы". Давайте создадим новую константу со значением числа π:</p>
17
<p>Мы можем заставить компьютер "помнить", что такое π и использовать это в вычислениях. Такой механизм называется "константы". Давайте создадим новую константу со значением числа π:</p>
18
<p>const - это специальное ключевое слово, после него - идентификатор - название вашей константы, затем знак равенства и значение.</p>
18
<p>const - это специальное ключевое слово, после него - идентификатор - название вашей константы, затем знак равенства и значение.</p>
19
<p>Теперь мы можем писать "pi" вместо того, чтобы вводить вручную 3.14.</p>
19
<p>Теперь мы можем писать "pi" вместо того, чтобы вводить вручную 3.14.</p>
20
<p>Кстати, двойной слеш и текст после него - это<strong>комментарии</strong>: JavaScript просто игнорирует их и они не влияют на работу кода. Мы пишем комментарии для себя и других людей, чтобы легче понимать код.</p>
20
<p>Кстати, двойной слеш и текст после него - это<strong>комментарии</strong>: JavaScript просто игнорирует их и они не влияют на работу кода. Мы пишем комментарии для себя и других людей, чтобы легче понимать код.</p>
21
<p>Давайте поместим площадь поверхности Марса в другую константу:</p>
21
<p>Давайте поместим площадь поверхности Марса в другую константу:</p>
22
<p>Теперь surface это другой идентификатор, в нём хранится<strong>результат</strong>вычисления. Тогда как это вычисление произвелось? Ну, во-первых, JavaScript должен вспомнить что такое pi, а потом заменить его на число, значение:</p>
22
<p>Теперь surface это другой идентификатор, в нём хранится<strong>результат</strong>вычисления. Тогда как это вычисление произвелось? Ну, во-первых, JavaScript должен вспомнить что такое pi, а потом заменить его на число, значение:</p>
23
<p>А затем идут умножения слева направо, потому что у нас нет скобок:</p>
23
<p>А затем идут умножения слева направо, потому что у нас нет скобок:</p>
24
<p>Мы можем вывести результат на экран с console.log: console.log(surface). Заметьте, что в этот раз мы не писали кавычки. Мы не будем выводить слово "surface". Это не строка. Мы выводим значение константы, называемой "surface".</p>
24
<p>Мы можем вывести результат на экран с console.log: console.log(surface). Заметьте, что в этот раз мы не писали кавычки. Мы не будем выводить слово "surface". Это не строка. Мы выводим значение константы, называемой "surface".</p>
25
<p>Теперь ваша очередь. Переходите к тестам и упражнению. Вы узнаете как много энергии в вашем теле, благодаря Эйнштейну.</p>
25
<p>Теперь ваша очередь. Переходите к тестам и упражнению. Вы узнаете как много энергии в вашем теле, благодаря Эйнштейну.</p>
26
<h2>Дополнение к уроку</h2>
26
<h2>Дополнение к уроку</h2>
27
<h3>Возведение в степень</h3>
27
<h3>Возведение в степень</h3>
28
<p>Стандарт es7 вводит новый оператор **, полезный при возведении в степень:</p>
28
<p>Стандарт es7 вводит новый оператор **, полезный при возведении в степень:</p>
29
<p>Другой способ возвести число в степень:</p>
29
<p>Другой способ возвести число в степень:</p>
30
<h3>Почему константы?</h3>
30
<h3>Почему константы?</h3>
31
<p>Возможно у вас возник вопрос: "почему константы, а не переменные?". Константы гораздо проще, чем переменные. Они всегда однозначно определены и никогда не меняются. В школе и в ВУЗе, в математике и физике мы имели дело только с константами.</p>
31
<p>Возможно у вас возник вопрос: "почему константы, а не переменные?". Константы гораздо проще, чем переменные. Они всегда однозначно определены и никогда не меняются. В школе и в ВУЗе, в математике и физике мы имели дело только с константами.</p>
32
<p>В будущих уроках вы увидите, что единственное место, где требуются переменные - это циклы. Практически во всех других случаях они не нужны, и их присутствие усложняет код (мы объясним это позже в курсе).</p>
32
<p>В будущих уроках вы увидите, что единственное место, где требуются переменные - это циклы. Практически во всех других случаях они не нужны, и их присутствие усложняет код (мы объясним это позже в курсе).</p>
33
<h3>Арность</h3>
33
<h3>Арность</h3>
34
<p>Арность - это количество аргументов. Операторы +, -, * и / применяются к двум операндам. В таком случае их арность составляет 2, поэтому мы можем называть эти операторы<em>бинарными</em>.</p>
34
<p>Арность - это количество аргументов. Операторы +, -, * и / применяются к двум операндам. В таком случае их арность составляет 2, поэтому мы можем называть эти операторы<em>бинарными</em>.</p>
35
<p>Есть ещё один оператор, который выглядит как двоичный минус, но он унарный (одинарный). Это когда - используется для обозначения отрицательного числа, например -327.</p>
35
<p>Есть ещё один оператор, который выглядит как двоичный минус, но он унарный (одинарный). Это когда - используется для обозначения отрицательного числа, например -327.</p>
36
<p>Ещё бывают<em>тернарные</em>(троичные) операторы, но вы их встретите позже.</p>
36
<p>Ещё бывают<em>тернарные</em>(троичные) операторы, но вы их встретите позже.</p>
37
<h3>Ассоциативность</h3>
37
<h3>Ассоциативность</h3>
38
<p>Ассоциативность (или фиксированность) определяет, как операторы группируются при отсутствии скобок. Рассмотрим выражение a ~ b ~ c. Если у оператора ~ левая ассоциативность, это выражение будет трактоваться как (a ~ b) ~ c.</p>
38
<p>Ассоциативность (или фиксированность) определяет, как операторы группируются при отсутствии скобок. Рассмотрим выражение a ~ b ~ c. Если у оператора ~ левая ассоциативность, это выражение будет трактоваться как (a ~ b) ~ c.</p>
39
<h3>Undefined</h3>
39
<h3>Undefined</h3>
40
<p>Рассмотрим следующий код:</p>
40
<p>Рассмотрим следующий код:</p>
41
<p>Что в этом случае выведется на экран? Современный JavaScript вообще не позволит вам создать константу без значения, но если позволит, полученный console.log выведет undefined. Это специальный идентификатор.</p>
41
<p>Что в этом случае выведется на экран? Современный JavaScript вообще не позволит вам создать константу без значения, но если позволит, полученный console.log выведет undefined. Это специальный идентификатор.</p>
42
<p>Вы можете установить значение undefined сами, вот таким способом:</p>
42
<p>Вы можете установить значение undefined сами, вот таким способом:</p>
43
<p>Но самому этого делать не стоит.</p>
43
<p>Но самому этого делать не стоит.</p>
44
<h2>Выводы</h2>
44
<h2>Выводы</h2>
45
<ul><li>Математика в JavaScript выглядит и воспринимается как привычная математика:<ul><li>Символы +, -, *, / означают то, что вы думаете.</li>
45
<ul><li>Математика в JavaScript выглядит и воспринимается как привычная математика:<ul><li>Символы +, -, *, / означают то, что вы думаете.</li>
46
<li>Ещё есть символ % - остаток от деления. Он вычисляет остаток от деления первого операнда на второй. Например, 11 % 5 это 1, а 10 % 2 это 0.</li>
46
<li>Ещё есть символ % - остаток от деления. Он вычисляет остаток от деления первого операнда на второй. Например, 11 % 5 это 1, а 10 % 2 это 0.</li>
47
<li>Есть Infinity и -Infinity.</li>
47
<li>Есть Infinity и -Infinity.</li>
48
<li>Когда вычисление оказывается не числом, JavaScript использует NaN, который означает "не число" (Not a Number). Например: 0/"word" это NaN<ul><li>Если в вычислении присутствует NaN, то результатом всегда будет NaN. Например: 120 + 5 / NaN это NaN</li>
48
<li>Когда вычисление оказывается не числом, JavaScript использует NaN, который означает "не число" (Not a Number). Например: 0/"word" это NaN<ul><li>Если в вычислении присутствует NaN, то результатом всегда будет NaN. Например: 120 + 5 / NaN это NaN</li>
49
</ul></li>
49
</ul></li>
50
</ul></li>
50
</ul></li>
51
<li>Заставьте компьютер "помнить" что-нибудь, создав константу. Например: const age = 39;</li>
51
<li>Заставьте компьютер "помнить" что-нибудь, создав константу. Например: const age = 39;</li>
52
</ul>
52
</ul>