Learn JavaScript

lesson ⧍ / ⧝ ¡ type, operator āφāϰ coercion: '5' + 2 āϕ⧇āύ 7 āύāĻž

Module ⧍ ¡ type, operator āφāϰ coercion: '5' + 2 āϕ⧇āύ 7 āύāĻž

āĻĒā§āϰāϤāĻŋāϟāĻž operator, āĻāĻ•āϟāĻž āĻāĻ•āϟāĻž āĻ•āϰ⧇

FreeāĻĒāĻĄāĻŧāĻž

āĻāχ lesson-āĻ āϝāĻž āĻļāĻŋāĻ–āĻŦ⧇

  • āĻāĻ•āϜāύ programmer āϰ⧋āϜ āϝāϤ operator āϞ⧇āϖ⧇, + āĻĨ⧇āϕ⧇ ??= āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, āϏāĻŦāϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āφāϰ number āĻŦāĻž string āĻĒ⧇āϞ⧇ āϕ⧋āύāϟāĻž āϕ⧀ āĻĻ⧇āĻŦ⧇ āφāϗ⧇āχ āĻŦāϞāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤
  • &&, || āφāϰ ?? āϕ⧇āύ āύāĻŋāĻœā§‡āϰ āĻāĻ•āϟāĻž operand-āχ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ, āĻŦ⧁āĻāĻŋāϝāĻŧ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āφāϰ || āĻŦāĻž ?? āĻĻāĻŋāϝāĻŧ⧇ default āĻŦāϏāĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤
  • Precedence āĻĻ⧇āϖ⧇ āĻāĻ•āϟāĻž expression āϕ⧀āĻ­āĻžāĻŦ⧇ āĻœā§‹āϟ āĻŦāĻžāρāϧ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āφāϰ āϕ⧋āύ⧋ value āĻŽā§‡āύ⧇ āύāĻŋāϤ⧇ āύāĻž āĻĒāĻžāϰāϞ⧇ operator āϝ⧇ āϤāĻŋāύāϟāĻž TypeError āĻĻ⧇āϝāĻŧ, āϏ⧇āϗ⧁āϞ⧋ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤

Maria āϚāĻžāϝāĻŧ, āĻ“āϰ score āĻ āĻŋāĻ• 5 āĻšāϞ⧇ āϤāĻŦ⧇āχ āĻāĻ•āϟāĻž message āφāϏ⧁āĻ•āĨ¤ āĻ“āϰ variable-āĻ āφāϛ⧇ 3, āφāϰ āĻ“ āϞ⧇āϖ⧇ if (x = 5)āĨ¤ Program āϕ⧋āύ⧋ error āĻ›āĻžāĻĄāĻŧāĻžāχ āϚāϞ⧇, āφāϰ message-āϟāĻžāĻ“ print āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻ•āĻŋāϛ⧁ crash āĻ•āϰ⧇āύāĻŋ, āĻ…āĻĨāϚ āωāĻ¤ā§āϤāϰ āϭ⧁āϞ: bug-āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāϟāĻžāχ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ–āĻžāϰāĻžāĻĒ āϜāĻžāϤāĨ¤ Maria āφāϏāϞ⧇ āϕ⧀ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇āĻ›āĻŋāϞ, āϏ⧇āϟāĻž āĻŦāϞāĻŦ⧇ assignment-āĻāϰ āĻ…āĻ‚āĻļāϟāĻžāĨ¤

Operator āĻšāϞ⧋ āĻāĻŽāύ āĻāĻ•āϟāĻž āϚāĻŋāĻšā§āύ, āϝ⧇āϟāĻž āĻāĻ•, āĻĻ⧁āχ āĻŦāĻž āϤāĻŋāύāϟāĻž value āύ⧇āϝāĻŧ, āϝāĻžāĻĻ⧇āϰ āĻŦāϞ⧇ āĻ“āϰ operand, āφāϰ āĻŦāĻĻāϞ⧇ āĻāĻ•āϟāĻž āύāϤ⧁āύ value āĻĻ⧇āϝāĻŧāĨ¤ āĻāχ lesson āĻĒā§āϰāϤāĻŋāϟāĻž āĻĒāϰāĻŋāĻŦāĻžāϰ⧇āϰ āĻ•āĻžāϛ⧇ āĻāĻ•āĻŦāĻžāϰ āĻ•āϰ⧇ āϝāĻžāĻŦ⧇: āϤāĻžāϰ āĻ—āĻĄāĻŧāύ, āĻ•āϝāĻŧ⧇āĻ• āϞāĻžāχāύ code, āϤāĻžāϰ āφāϏāϞ output, āφāϰ āϝ⧇ āĻāĻ•āϟāĻž āϜāĻŋāύāĻŋāϏ⧇ āĻšā§‹āĻ– āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāĻ•āϟāĻž operator-āĻāϰ āĻ–āϰāϚ āĻāϤ āĻ•āĻŽ āϝ⧇ āĻŽāĻžāĻĒāĻžāϰ āĻŽāϤ⧋ āĻ•āĻŋāϛ⧁ āύ⧇āχ, āϤāĻžāχ āĻ…āĻ¨ā§āϝ topic lesson-āĻāϰ cost-āĻāϰ āϞāĻžāχāύāϟāĻž āĻāĻ–āĻžāύ⧇ āχāĻšā§āϛ⧇ āĻ•āϰ⧇āχ āϰāĻžāĻ–āĻž āĻšāϝāĻŧāύāĻŋāĨ¤

āĻ—āĻŖāĻŋāϤ⧇āϰ operator: + - * / % **

āĻ—āĻŖāĻŋāϤ⧇āϰ operator

a + b   a - b   a * b   a / b   a % b   a ** b
+a   -a
  • % āĻĻ⧇āϝāĻŧ āĻ­āĻžāĻ—āĻļ⧇āώ, āφāϰ ** āĻĻ⧇āϝāĻŧ a-āϰ b āϘāĻžāϤāĨ¤
  • +a āφāϰ -a āύ⧇āϝāĻŧ āĻāĻ•āϟāĻžāχ operand: āϏ⧇āϟāĻžāϕ⧇ number āĻŦāĻžāύāĻžāϝāĻŧ, āφāϰ -a āϚāĻŋāĻšā§āύāϟāĻžāĻ“ āωāĻ˛ā§āĻŸā§‡ āĻĻ⧇āϝāĻŧāĨ¤
console.log(7 + 2, 7 - 2, 7 * 2, 7 / 2);
console.log(7 % 2, -7 % 3, 2 ** 10);
console.log(+"42", -"3", +"", +"4 2");
console.log(10 - 2 - 3, 2 ** 3 ** 2);
9 5 14 3.5
1 -1 1024
42 -3 0 NaN
5 512

āĻ­āĻžāĻ— āĻ•āϰāϞ⧇ āĻ­āĻ—ā§āύāĻžāĻ‚āĻļ āĻĨ⧇āϕ⧇ āϝāĻžāϝāĻŧ (Module 1), āφāϰ āĻ­āĻžāĻ—āĻļ⧇āώ⧇āϰ āϚāĻŋāĻšā§āύ āĻšāϝāĻŧ āĻŦāĻžāρ āĻĻāĻŋāϕ⧇āϰ operand-āĻāϰ āĻŽāϤ⧋āĨ¤ āĻāĻ•-operand-āĻāϰ + āĻ āĻŋāĻ• lesson 01-āĻāϰ Number()-āĻāϰ āĻŽāϤ⧋āχ convert āĻ•āϰ⧇: "" āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ 0, āφāϰ "4 2" āĻšāϝāĻŧ NaNāĨ¤

āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— operator āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇ āĻœā§‹āϟ āĻŦāĻžāρāϧ⧇, āϤāĻžāχ 10 - 2 - 3 āĻŽāĻžāύ⧇ (10 - 2) - 3āĨ¤ Power operator āĻœā§‹āϟ āĻŦāĻžāρāϧ⧇ āĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϝāĻŧ⧇: 2 ** 3 ** 2 āĻŽāĻžāύ⧇ 2 ** 9, āĻ…āĻ°ā§āĻĨāĻžā§Ž 512āĨ¤

āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: āϕ⧋āύ⧋ āĻāĻ• āĻĒāĻžāĻļ⧇ string āĻĨāĻžāĻ•āϞ⧇ + text āĻœā§‹āĻĄāĻŧāĻž āϞāĻžāĻ—āĻžāϝāĻŧ (lesson 01)āĨ¤ āϤāĻžāχ āĻ…āĻ¨ā§āϝ āϕ⧇āω āĻĒāĻĄāĻŧāĻŦ⧇ āĻāĻŽāύ āϞāĻžāχāύ⧇ +x-āĻāϰ āĻŦāĻĻāϞ⧇ āϞ⧇āĻ–ā§‹ Number(x)āĨ¤ āĻ•āĻžāϜ āĻāĻ•āχ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϕ⧀ āĻ•āϰāϛ⧇ āϏ⧇āϟāĻž āĻŽā§āϖ⧇ āĻŦāϞ⧇ āĻĻ⧇āϝāĻŧāĨ¤

Increment āφāϰ decrement: ++ āφāϰ --

Increment āφāϰ decrement

x++   x--     postfix: āφāϗ⧇āϰ value āĻĻ⧇āϝāĻŧ, āϤāĻžāϰāĻĒāϰ x āĻŦāĻĻāϞāĻžāϝāĻŧ
++x   --x     prefix: āφāϗ⧇ x āĻŦāĻĻāϞāĻžāϝāĻŧ, āϤāĻžāϰāĻĒāϰ āύāϤ⧁āύ value āĻĻ⧇āϝāĻŧ
  • x āĻšāϤ⧇ āĻšāĻŦ⧇ āĻāĻ•āϟāĻž let variable; āĻĒā§āϰāϤāĻŋāϟāĻž āϰ⧂āĻĒ 1 āϝ⧋āĻ— āĻ•āϰ⧇ āĻŦāĻž 1 āĻŦāĻžāĻĻ āĻĻ⧇āϝāĻŧāĨ¤
let a = 5;
console.log(a++, a);
let b = 5;
console.log(++b, b);
5 6
6 6

āĻĻ⧁āχāϟāĻž variable-āχ āĻļ⧇āώ⧇ 6āĨ¤ āϤāĻĢāĻžāϤāϟāĻž āĻšāϞ⧋ expression āύāĻŋāĻœā§‡ āϕ⧋āύ value āĻĻ⧇āϝāĻŧ: a++ console.log-āϕ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇ āĻĒ⧁āϰāύ⧋ 5, āφāϰ ++b āĻĻāĻŋāϝāĻŧ⧇āϛ⧇ āύāϤ⧁āύ 6āĨ¤ āφāϞāĻžāĻĻāĻž āϞāĻžāχāύ⧇ āĻāĻ•āĻž āĻĨāĻžāĻ•āϞ⧇ count++; āφāϰ ++count; āĻšā§āĻŦāĻšā§ āĻāĻ•āχ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: āĻŦāĻĄāĻŧ āϕ⧋āύ⧋ expression-āĻāϰ āĻ­āĻŋāϤāϰ⧇ x++-āĻāϰ value āϤāĻ–āύāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋, āϝāĻ–āύ āϏāĻ¤ā§āϝāĻŋāχ āĻĒ⧁āϰāύ⧋ value-āϟāĻž āϚāĻžāĻ“āĨ¤ 5++ āϞāĻŋāĻ–āϞ⧇ program āϚāϞāĻžāϰ āφāϗ⧇āχ āĻĨ⧇āĻŽā§‡ āϝāĻžāϝāĻŧ, āϏāĻžāĻĨ⧇ SyntaxError: Invalid left-hand side expression in postfix operation, āĻ•āĻžāϰāĻŖ āĻŦāĻĻāϞāĻžāύ⧋ āϝāĻžāϝāĻŧ āĻļ⧁āϧ⧁ variableāĨ¤ const-āĻāϰ āωāĻĒāϰ āĻ•āϰāϞ⧇ āĻĒāĻžāĻŦ⧇ Module 1-āĻāϰ TypeError: Assignment to constant variable.

āϤ⧁āϞāύāĻž: āϛ⧋āϟ, āĻŦāĻĄāĻŧ āφāϰ āϚāĻžāϰ āϰāĻ•āĻŽā§‡āϰ āϏāĻŽāĻžāύ

āϤ⧁āϞāύāĻž

a < b     a > b     a <= b    a >= b
a === b   a !== b   a == b    a != b
  • āĻĒā§āϰāϤāĻŋāϟāĻž āϤ⧁āϞāύāĻž āĻāĻ•āϟāĻž boolean āĻĻ⧇āϝāĻŧ: true āĻ…āĻĨāĻŦāĻž falseāĨ¤
  • === āφāϰ !== type āφāϰ value āĻĻ⧁āχāϟāĻžāχ āĻŽā§‡āϞāĻžāϝāĻŧ, āĻ•āĻŋāϛ⧁ convert āύāĻž āĻ•āϰ⧇; == āφāϰ != āφāϗ⧇ convert āĻ•āϰ⧇ āύ⧇āϝāĻŧāĨ¤
console.log(3 < 5, 5 <= 5, 2 > 9, 9 >= 10);
console.log(1 === 1, 1 === "1", 1 !== "1");
console.log(1 == "1", 1 != "1", null == undefined);
console.log("10" < 9, "7" >= 7);
true true false false
true false true
true false true
false true

!== āφāϰ != āĻšāϞ⧋ === āφāϰ ==-āĻāϰ āωāĻ˛ā§āĻŸā§‹āĨ¤ Lesson 01 ===-āϕ⧇ default āĻŦāĻžāύāĻŋāϝāĻŧ⧇āϛ⧇; == āϕ⧋āĻĨāĻžāϝāĻŧ āϏāĻ¤ā§āϝāĻŋāχ āĻ•āĻžāĻœā§‡āϰ, āϏ⧇āϟāĻž āĻĻ⧇āĻ–āĻžāĻŦ⧇ lesson 04āĨ¤ āĻāĻ•āĻĻāĻŋāϕ⧇ number āφāϰ āĻ…āĻ¨ā§āϝāĻĻāĻŋāϕ⧇ string āĻĨāĻžāĻ•āϞ⧇ string-āϟāĻž number āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ, āϤāĻžāχ "10" < 9 āφāϏāϞ⧇ 10 < 9, āĻŽāĻžāύ⧇ falseāĨ¤

āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: āĻĻ⧁āχ āĻĒāĻžāĻļ⧇āχ string āĻšāϞ⧇ āĻ•āĻŋāϛ⧁āχ convert āĻšāϝāĻŧ āύāĻžāĨ¤ āĻĒāϰ⧇āϰ āĻ…āĻ‚āĻļ⧇āϰ āϚāĻŽāĻ•āϟāĻž āφāϏ⧇ āϏ⧇āĻ–āĻžāύ āĻĨ⧇āϕ⧇āχāĨ¤

āĻĻ⧁āχāϟāĻž string āϤ⧁āϞāύāĻž āĻšāϝāĻŧ text āĻšāĻŋāϏ⧇āĻŦ⧇, āϏāĻ‚āĻ–ā§āϝāĻž āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻž

const a = "10";
const b = "9";
console.log(a < b);
console.log(Number(a) < Number(b));
true
false

āĻĒā§āϰāϤāĻŋāϟāĻž character-āĻāϰ āĻāĻ•āϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž āφāϛ⧇, āϤāĻžāϰ code: "1" āĻšāϞ⧋ 49, āφāϰ "9" āĻšāϞ⧋ 57 (āĻĒ⧁āϰ⧋ table-āϟāĻž āĻĻ⧇āĻ–āĻžāĻŦ⧇ Module 3)āĨ¤ āĻĻ⧁āχāϟāĻž string āĻŦāĻžāρ āĻĻāĻŋāĻ• āĻĨ⧇āϕ⧇ code āϧāϰ⧇ āϧāϰ⧇ āϤ⧁āϞāύāĻž āĻšāϝāĻŧ, āĻ āĻŋāĻ• āϝ⧇āĻ­āĻžāĻŦ⧇ dictionary āĻļāĻŦā§āĻĻ āϏāĻžāϜāĻžāϝāĻŧāĨ¤ "10" āφāϰ "9" āĻĒā§āϰāĻĨāĻŽ character-āĻāχ āφāϞāĻžāĻĻāĻž, 49 āĻŦāύāĻžāĻŽ 57, āϤāĻžāχ "10" āφāϗ⧇ āφāϏ⧇, āĻŦāĻžāĻ•āĻŋāϟāĻž āφāϰ āĻĻ⧇āĻ–āĻžāχ āĻšāϝāĻŧ āύāĻžāĨ¤

āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ⧋ āĻĻ⧁āχ āĻĒāĻžāĻļāϕ⧇āχ āχāĻšā§āϛ⧇ āĻ•āϰ⧇ convert āĻ•āϰāĻž, āĻļ⧇āώ āϞāĻžāχāύ⧇ āϝ⧇āĻŽāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇; starter-āĻ āĻĒāĻĄāĻŧā§‹ nextInt() āĻĻāĻŋāϝāĻŧ⧇, next() āĻĻāĻŋāϝāĻŧ⧇ āύāĻžāĨ¤ āϤāĻžāχ "10" < "9" āĻšāϞ⧋ true, āφāϰ Number("10") < Number("9") āĻšāϞ⧋ falseāĨ¤

Logical operator āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āύāĻŋāĻœā§‡āϰ āĻāĻ•āϟāĻž operand

Logical operator

a && b   a falsy āĻšāϞ⧇ a āĻĻ⧇āϝāĻŧ, āύāĻž āĻšāϞ⧇ b
a || b   a truthy āĻšāϞ⧇ a āĻĻ⧇āϝāĻŧ, āύāĻž āĻšāϞ⧇ b
!a       a falsy āĻšāϞ⧇ true āĻĻ⧇āϝāĻŧ, āύāĻž āĻšāϞ⧇ false
  • Truthy āφāϰ falsy lesson 01-āĻāϰ āĻļāĻŦā§āĻĻ: āĻ›āϝāĻŧāϟāĻž falsy value, āĻŦāĻžāĻ•āĻŋ āϏāĻŦ truthyāĨ¤
console.log(0 && "yes", 3 && "yes");
console.log("" || "guest", "Zara" || "guest");
console.log(!0, !"text", !!"text");
console.log(false && console.log("never printed"));
0 yes
guest Zara
true false true
false

āĻĒā§āϰāĻĨāĻŽ āĻĻ⧁āχ āϞāĻžāχāύ⧇ āϕ⧋āĻĨāĻžāĻ“ true āĻŦāĻž false āύ⧇āχ: && āφāϰ || āύāĻŋāĻœā§‡āϰ āĻāĻ•āϟāĻž operand-āχ āĻšā§āĻŦāĻšā§ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤ āϏāĻŦāϏāĻŽāϝāĻŧ boolean āĻĻ⧇āϝāĻŧ āĻļ⧁āϧ⧁ !, āϤāĻžāχ !!x āĻŽāĻžāύ⧇ Boolean(x)āĨ¤

āĻļ⧇āώ āϞāĻžāχāύāϟāĻž āĻĻ⧇āĻ–āĻžāϝāĻŧ short-circuit: āĻŦāĻžāρ āĻĒāĻžāĻļ⧇āχ āωāĻ¤ā§āϤāϰ āĻ āĻŋāĻ• āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇ āĻĄāĻžāύ āĻĒāĻžāĻļāϟāĻž āφāϰ āϚāϞ⧇āχ āύāĻž, āϤāĻžāχ āĻ­āĻŋāϤāϰ⧇āϰ console.log-āϕ⧇ āĻ•āĻ–āύ⧋ call āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤

āĻĻ⧁āχāϟāĻž āĻ•āĻĨāĻž āĻāĻ•āϏāĻžāĻĨ⧇ āĻ•āϰ⧋, āϤāĻžāĻšāϞ⧇ name || "guest" āĻāĻ•āϟāĻž default āĻŦāϏāĻžāϝāĻŧ: āύāĻžāĻŽ truthy āĻšāϞ⧇ āύāĻžāĻŽāϟāĻžāχ, āύāĻž āĻšāϞ⧇ "guest"āĨ¤ āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: || āĻĒā§āϰāϤāĻŋāϟāĻž falsy value-āϕ⧇āχ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ, āĻāĻŽāύ āĻ•āĻŋāϛ⧁āϕ⧇āĻ“ āϝ⧇āϟāĻž āφāϏāϞ⧇ āĻ āĻŋāĻ• āωāĻ¤ā§āϤāϰ āĻšāϤ⧇ āĻĒāĻžāϰāϤ, āϝ⧇āĻŽāύ āχāĻšā§āϛ⧇ āĻ•āϰ⧇ āĻ–āĻžāϞāĻŋ āϰāĻžāĻ–āĻž āĻāĻ•āϟāĻž āύāĻžāĻŽāĨ¤

Nullish coalescing: ?? āĻŦāύāĻžāĻŽ ||

Nullish coalescing

a ?? b   a āĻĻ⧇āϝāĻŧ, āĻļ⧁āϧ⧁ a null āĻŦāĻž undefined āĻšāϞ⧇ āĻĻ⧇āϝāĻŧ b
  • Nullish āĻŽāĻžāύ⧇ null āĻŦāĻž undefined, Module 1-āĻāϰ āϏ⧇āχ āĻĻ⧁āχāϟāĻž "āϕ⧋āύ⧋ value āύ⧇āχ" valueāĨ¤
const nickname = "";
console.log("with ||: [" + (nickname || "guest") + "]");
console.log("with ??: [" + (nickname ?? "guest") + "]");
console.log(null ?? "guest", undefined ?? "guest", false ?? "guest");
with ||: [guest]
with ??: []
guest guest false

Zara āχāĻšā§āϛ⧇ āĻ•āϰ⧇āχ āĻ“āϰ nickname āĻ–āĻžāϞāĻŋ āϰ⧇āϖ⧇āϛ⧇āĨ¤ || āĻ“āϰ āĻĒāĻ›āĻ¨ā§āĻĻāϟāĻž āĻĢ⧇āϞ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇, āĻ•āĻžāϰāĻŖ "" falsyāĨ¤ ?? āϏ⧇āϟāĻž āϰ⧇āϖ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇, āϤāĻžāχ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āϞāĻžāχāύ⧇āϰ bracket āĻĻ⧁āχāϟāĻžāϰ āĻ­āĻŋāϤāϰ⧇ āĻ•āĻŋāϛ⧁ āύ⧇āχāĨ¤ ?? fallback āĻ•āϰ⧇ āĻļ⧁āϧ⧁ null āφāϰ undefined-āĻ, āĻŦāĻžāĻ•āĻŋ āϏāĻŦ value āϰ⧇āϖ⧇ āĻĻ⧇āϝāĻŧ, false-āĻ“āĨ¤

āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: parentheses āĻ›āĻžāĻĄāĻŧāĻž ?? āĻ•āĻŋāϛ⧁āϤ⧇āχ || āĻŦāĻž &&-āĻāϰ āĻĒāĻžāĻļ⧇ āĻŦāϏāĻŦ⧇ āύāĻž ("āϝ⧇ āϭ⧁āϞāϗ⧁āϞ⧋ āϏāĻŦāĻžāχ āĻ•āϰ⧇"-āϰ 4 āύāĻŽā§āĻŦāϰ)āĨ¤ āĻĻ⧁āχāϟāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϕ⧋āύāϟāĻž āύ⧇āĻŦ⧇, āϏ⧇āϟāĻž āĻ āĻŋāĻ• āĻ•āϰāĻž lesson 04-āĻāϰ āĻ•āĻžāϜāĨ¤

Optional chaining: ?. (āĻāĻ• āĻāϞāĻ•)

Optional chaining

value?.name   value null āĻŦāĻž undefined āĻšāϞ⧇ undefined āĻĻ⧇āϝāĻŧ, āύāĻž āĻšāϞ⧇ value.name
const user = { name: "Zara" };
const nobody = null;
console.log(user?.name, nobody?.name);
console.log(nobody?.name ?? "guest");
Zara undefined
guest

{ name: "Zara" } āĻšāϞ⧋ āĻāĻ•āϟāĻž object, āĻŽāĻžāύ⧇ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻ•āϝāĻŧ⧇āĻ•āϟāĻž āĻ…āĻ‚āĻļāĻ“āϝāĻŧāĻžāϞāĻž āĻāĻ•āϟāĻž value, āφāϰ user.name āϤāĻžāϰ āĻāĻ•āϟāĻž āĻ…āĻ‚āĻļ āĻĒāĻĄāĻŧ⧇āĨ¤ Object āĻļ⧇āĻ–āĻžāĻŦ⧇ Module 8āĨ¤ null-āĻāϰ āωāĻĒāϰ āϏāĻžāϧāĻžāϰāĻŖ dot āĻĻāĻŋāϞ⧇ program āĻĨ⧇āĻŽā§‡ āϝāĻžāϝāĻŧ: nobody.name āĻĻ⧇āϝāĻŧ TypeError: Cannot read properties of null (reading 'name')āĨ¤ ?. āφāϗ⧇ āĻŦāĻžāρ āĻĒāĻžāĻļāϟāĻž āĻĻ⧇āϖ⧇ āύ⧇āϝāĻŧ, āφāϰ āĻĨāĻžāĻŽāĻžāϰ āĻŦāĻĻāϞ⧇ āĻĻ⧇āϝāĻŧ undefinedāĨ¤

āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: ?. āύāĻž-āĻĨāĻžāĻ•āĻž value-āϕ⧇ āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ undefined, āϤāĻžāχ āφāϏāϞ āĻāĻ•āϟāĻž default āĻĒ⧇āϤ⧇ āĻ“āϰ āϏāĻžāĻĨ⧇ ?? āϜ⧁āĻĄāĻŧ⧇ āĻĻāĻžāĻ“, āĻļ⧇āώ āϞāĻžāχāύ⧇ āϝ⧇āĻŽāύāĨ¤ āĻŦāĻžāĻ•āĻŋāϟāĻž āφāύāĻŦ⧇ Module 8āĨ¤

Ternary: condition ? a : b

Conditional operator

condition ? valueIfTruthy : valueIfFalsy
  • condition-āϕ⧇ truthy āĻŦāĻž falsy āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāĻĄāĻŧāĻž āĻšāϝāĻŧ; āĻĻ⧁āχāϟāĻž value-āϰ āĻŽāĻ§ā§āϝ⧇ āĻšāĻŋāϏāĻžāĻŦ āĻšāϝāĻŧ āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻžāϰāĨ¤
const marks = 72;
console.log(marks >= 40 ? "pass" : "fail");
const n = 7;
console.log(n % 2 === 0 ? "even" : "odd");
pass
odd

āĻāϟāĻžāχ āĻāĻ•āĻŽāĻžāĻ¤ā§āϰ operator āϝāĻžāϰ operand āϤāĻŋāύāϟāĻž, āϤāĻžāχ āύāĻžāĻŽ ternaryāĨ¤ if-āĻāϰ āĻŽāϤ⧋ āύāĻž (Module 4), āĻāϟāĻž āĻāĻ•āϟāĻž expression: āĻāĻŽāύ āĻāĻ•āϟāĻž value āĻĻ⧇āϝāĻŧ, āϝ⧇āϟāĻž āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧋, print āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧋, āĻŦāĻž out-āĻ push āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧋āĨ¤

āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: āĻāĻ•āϟāĻž ternary āĻĒāĻĄāĻŧāϤ⧇ āφāϰāĻžāĻŽ, āĻ•āĻŋāĻ¨ā§āϤ⧁ ternary-āϰ āĻ­āĻŋāϤāϰ⧇ ternary āϖ⧁āĻŦ āϤāĻžāĻĄāĻŧāĻžāϤāĻžāĻĄāĻŧāĻŋ āϜāϟ āĻĒāĻžāĻ•āĻžāϝāĻŧāĨ¤ āĻŽāĻžāĻā§‡āϰ āĻĢāϞāϟāĻžāϕ⧇ const āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻž āύāĻžāĻŽ āĻĻāĻžāĻ“, āĻ…āĻĨāĻŦāĻž parentheses āĻŦāϏāĻžāĻ“āĨ¤

Assignment: = āϰ⧇āϖ⧇ āĻĻ⧇āϝāĻŧ, āĻĒā§āϰāĻļā§āύ āĻ•āϰ⧇ āύāĻž

Assignment

name = value   value-āϕ⧇ name-āĻ āϰāĻžāϖ⧇, āφāϰ āĻĒ⧁āϰ⧋ expression-āϟāĻž āĻĻ⧇āϝāĻŧ value

āĻāχ āϝ⧇ Maria-āϰ program, āϏāĻ¤ā§āϝāĻŋ āϏāĻ¤ā§āϝāĻŋ āϚāĻžāϞāĻžāύ⧋āĨ¤

let x = 3;
if (x = 5) {
  console.log("x is five, and now x is", x);
}
x is five, and now x is 5

=-āĻ“ āĻāĻ•āϟāĻž operatorāĨ¤ āĻāϟāĻž āĻĄāĻžāύ āĻĒāĻžāĻļāϟāĻž āĻŦāĻžāρ āĻĒāĻžāĻļ⧇āϰ āύāĻžāĻŽā§‡ āϰāĻžāϖ⧇, āφāϰ āĻĒ⧁āϰ⧋ expression-āϟāĻž āĻĻ⧇āϝāĻŧ āϰāĻžāĻ–āĻž value-āϟāĻžāĨ¤ āϤāĻžāχ if (x = 5) āφāϗ⧇ x-āĻ 5 āϰāĻžāϖ⧇, āϤāĻžāϰāĻĒāϰ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇ 5 truthy āĻ•āĻŋ āύāĻžāĨ¤ 5 truthy, āϤāĻžāχ message āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰāχ print āĻšāϝāĻŧ, āφāϰ x āϤāĻžāϰ 3 āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞ⧇āĨ¤

Maria āĻŦā§‹āĻāĻžāϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ if (x === 5): === āĻĒā§āϰāĻļā§āύ āĻ•āϰ⧇, = āĻšā§āϕ⧁āĻŽ āĻĻ⧇āϝāĻŧāĨ¤ Assignment āĻœā§‹āϟ āĻŦāĻžāρāϧ⧇ āĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϝāĻŧ⧇, āϤāĻžāχ a = b = 0 āφāϗ⧇ b āĻŦāϏāĻžāϝāĻŧ, āϤāĻžāϰāĻĒāϰ aāĨ¤ āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: āĻāϟāĻž valid JavaScript, āϤāĻžāχ engine āĻ•āĻ–āύ⧋ āφāĻĒāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āύāĻž; āφāĻĒāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ linter ("āĻāϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇" āĻĻ⧇āĻ–ā§‹)āĨ¤

Compound āφāϰ logical assignment: += āĻĨ⧇āϕ⧇ ??=

Compound assignment

x += y   x -= y   x *= y   x /= y   x %= y   x **= y
x &&= y   x ||= y   x ??= y
  • x += y āĻšāϞ⧋ x = x + y-āĻāϰ āϛ⧋āϟ āϰ⧂āĻĒ, āφāϰ āĻŦāĻžāĻ•āĻŋ āĻĒāĻžāρāϚāϟāĻž āĻ—āĻŖāĻŋāϤ⧇āϰ āϰ⧂āĻĒ⧇āĻ“ āĻāĻ•āχ āύāĻŋāϝāĻŧāĻŽāĨ¤
  • x ||= y āĻŦāϏāĻžāϝāĻŧ āĻļ⧁āϧ⧁ x falsy āĻšāϞ⧇, x &&= y āĻļ⧁āϧ⧁ truthy āĻšāϞ⧇, āφāϰ x ??= y āĻļ⧁āϧ⧁ null āĻŦāĻž undefined āĻšāϞ⧇āĨ¤
let price = 200;
price -= 20;
price *= 2;
let title = "";
title ||= "Untitled";
let pages = null;
pages ??= 1;
console.log(price, title, pages);
360 Untitled 1

200 āĻĨ⧇āϕ⧇ 20 āĻŦāĻžāĻĻ āĻĻāĻŋāϞ⧇ 180, āϤāĻžāϰ āĻĻā§āĻŦāĻŋāϗ⧁āĻŖ 360āĨ¤ title āĻ–āĻžāϞāĻŋ āĻ›āĻŋāϞ, āϤāĻžāχ ||= āϏ⧇āϟāĻž āĻ­āϰ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇; pages āĻ›āĻŋāϞ null, āϤāĻžāχ ??= āĻ­āϰ⧇āϛ⧇āĨ¤ Logical āϤāĻŋāύāϟāĻž āϰ⧂āĻĒ language-āĻ āĻāϏ⧇āϛ⧇ ES2021-āĻ, āφāϰ Node 22 āĻāϗ⧁āϞ⧋ āϚāĻžāϞāĻžāϝāĻŧāĨ¤

āϝ⧇āϟāĻžāϝāĻŧ āĻšā§‹āĻ– āϰāĻžāĻ–āĻŦ⧇: += āĻŽāĻžāύ⧇āχ +-āĻāϰ āύāĻŋāϝāĻŧāĻŽ, āϤāĻžāχ string-āĻāϰ āωāĻĒāϰ āĻāϟāĻž text āĻœā§‹āĻĄāĻŧ⧇āĨ¤ let line = "a"; line += 1; āĻļ⧇āώ⧇ āϰ⧇āϖ⧇ āϝāĻžāϝāĻŧ "a1"āĨ¤

āĻŦāĻžāĻ•āĻŋāϰāĻž: comma, void, typeof, instanceof āφāϰ bitwise āĻĒāϰāĻŋāĻŦāĻžāϰ

āĻŦāĻžāĻ•āĻŋāϰāĻž

(a, b)              comma: a-āϰ āĻšāĻŋāϏāĻžāĻŦ āĻ•āϰ⧇, āĻĢ⧇āϞ⧇ āĻĻ⧇āϝāĻŧ, āĻĻ⧇āϝāĻŧ b
void x              undefined āĻĻ⧇āϝāĻŧ
typeof x            type-āĻāϰ āύāĻžāĻŽāϟāĻž string āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĻ⧇āϝāĻŧ
x instanceof Type   āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇, x-āϕ⧇ Type āĻŦāĻžāύāĻŋāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋ āύāĻž
&  |  ^  ~  <<  >>  >>>   bitwise: āĻļ⧁āϧ⧁ āύāĻžāĻŽ, āĻāĻ–āĻžāύ⧇ āĻļ⧇āĻ–āĻžāύ⧋ āĻšāĻŦ⧇ āύāĻž
console.log((1, 2), void 0);
console.log(typeof 42, typeof "42", typeof null);
console.log([] instanceof Array, typeof []);
2 undefined
number string object
true object

Comma-āϰ āĻĻ⧇āĻ–āĻž āĻĒāĻžāĻŦ⧇ āĻĻ⧁āχāϟāĻž counter-āĻ“āϝāĻŧāĻžāϞāĻž for header-āĻ, āφāϰ void 0-āĻāϰ āĻĻ⧇āĻ–āĻž āĻĒāĻžāĻŦ⧇ āϕ⧋āύ⧋ tool-āĻāϰ āĻŦāĻžāύāĻžāύ⧋ code-āĻ; āύāĻŋāĻœā§‡ āϕ⧋āύ⧋āϟāĻžāχ āϞāĻŋāĻ–āϤ⧇ āĻšāĻŦ⧇ āύāĻžāĨ¤ typeof āĻšāϞ⧋ Module 1-āĻāϰ operator, āϤāĻžāχ parentheses āϞāĻžāϗ⧇ āύāĻžāĨ¤ typeof āϝ⧇āĻ–āĻžāύ⧇ āĻļ⧁āϧ⧁ "object" āĻŦāϞ⧇, instanceof āϏ⧇āĻ–āĻžāύ⧇ āĻŦāϞ⧇ āĻĻ⧇āϝāĻŧ [] āĻāĻ•āϟāĻž array (Module 7); āϕ⧀āĻ­āĻžāĻŦ⧇ āϜāĻžāύ⧇, āϏ⧇āϟāĻž āĻŦāϞāĻŦ⧇ Module 9āĨ¤

Bitwise operator āĻ•āĻžāϜ āĻ•āϰ⧇ āĻāĻ•āϟāĻž number-āĻāϰ 32-bit āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž āϰ⧂āĻĒ⧇āϰ āωāĻĒāϰ, flag āφāϰ hash-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ MDN-āĻāϰ "Expressions and operators" page-āĻ āĻāĻĻ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻž āφāϛ⧇, āφāϰ āĻāχ track āĻāϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻļ⧁āϧ⧁ āϝ⧇āĻ–āĻžāύ⧇ āϕ⧋āύ⧋ problem-āĻ āϞāĻžāϗ⧇āĨ¤ in, delete, new, ... āφāϰ await āφāϏāĻŦ⧇ āύāĻŋāϜ āύāĻŋāϜ āĻŦāĻŋāώāϝāĻŧ⧇āϰ āϏāĻžāĻĨ⧇, Module 7, 8, 9 āφāϰ 13-āĻāĨ¤

Precedence: āϕ⧋āύ operator āφāϗ⧇

āĻāĻ•āϟāĻž expression-āĻ āĻ•āϝāĻŧ⧇āĻ•āϟāĻž operator āĻĨāĻžāĻ•āϞ⧇ āϕ⧋āύāϟāĻž āφāϗ⧇ āϚāϞāĻŦ⧇, āϏ⧇āϟāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇ precedence, āϝ⧇āĻŽāύ āĻ¸ā§āϕ⧁āϞ⧇āϰ āĻ…āĻ™ā§āϕ⧇ āϝ⧋āϗ⧇āϰ āφāϗ⧇ āϗ⧁āĻŖāĨ¤ āĻāĻ•āχ āϏāĻžāϰāĻŋāϰ āĻĻ⧁āχāϟāĻž operator-āĻāϰ āĻŽāĻ§ā§āϝ⧇ āϟāĻžāχ āĻ­āĻžāϙ⧇ associativity: āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāϗ⧇āϰ āĻŦ⧇āϞāĻžāϝāĻŧ āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇, āφāϰ **, ternary āφāϰ assignment-āĻāϰ āĻŦ⧇āϞāĻžāϝāĻŧ āĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϝāĻŧ⧇āĨ¤ āύāĻŋāĻšā§‡ āĻāχ lesson-āĻāϰ āĻĒā§āϰāϤāĻŋāϟāĻž operator, āĻĒā§āϰāĻĨāĻŽ āĻĨ⧇āϕ⧇ āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤

āĻ•ā§āϰāĻŽOperatorāĻœā§‹āϟ āĻŦāĻžāρāϧ⧇āωāĻĻāĻžāĻšāϰāĻŖ, āĻœā§‹āϟ āĻĻ⧇āĻ–āĻŋāϝāĻŧ⧇
1( )āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ­āĻŋāϤāϰ⧇āϰāϟāĻž āφāϗ⧇(1 + 2) * 3 āĻšāϞ⧋ 9
2. ?. [ ] āφāϰ call f()āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇user?.name
3x++ x--āĻāĻ•āϟāĻžāχ operanda++ * 2 āĻŽāĻžāύ⧇ (a++) * 2
4! +x -x ++x --x typeof voidāĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϝāĻŧ⧇!a && b āĻŽāĻžāύ⧇ (!a) && b
5**āĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϝāĻŧ⧇2 ** 3 ** 2 āĻŽāĻžāύ⧇ 2 ** (3 ** 2)
6* / %āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇10 / 2 * 5 āĻšāϞ⧋ 25
7+ -āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇1 + 2 * 3 āĻšāϞ⧋ 7
8< > <= >= instanceofāĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇3 > 2 > 1 āĻŽāĻžāύ⧇ (3 > 2) > 1
9=== !== == !=āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇1 + 1 === 2 āĻšāϞ⧋ true
10&&āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇a || b && c āĻŽāĻžāύ⧇ a || (b && c)
11|| ??āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇parentheses āύāĻž āĻĻāĻŋāϞ⧇ ?? āĻ•āĻ–āύ⧋ || āĻŦāĻž &&-āĻāϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āĻļ⧇ āύāĻž
12? : āφāϰ āϏāĻŦ assignment, = āĻĨ⧇āϕ⧇ ??=āĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϝāĻŧ⧇a = b = 0 āĻŽāĻžāύ⧇ a = (b = 0)
13,āĻŦāĻžāρ āĻĨ⧇āϕ⧇ āĻĄāĻžāύ⧇āϏāĻŦāϏāĻŽāϝāĻŧ āϏāĻŦāĻžāϰ āĻļ⧇āώ⧇

MDN-āĻāϰ āĻĒ⧁āϰ⧋ table-āĻ bitwise operator-āϗ⧁āϞ⧋āϰ āϜāĻžāϝāĻŧāĻ—āĻžāĻ“ āĻĻ⧇āĻ“āϝāĻŧāĻž āφāϛ⧇āĨ¤ āĻāĻŦāĻžāϰ āĻĻ⧇āĻ–ā§‹, āĻāχ table āĻāĻ•āϟāĻž āϞāĻžāχāύ⧇āϰ āωāĻĒāϰ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

1 + 2 * 3 > 6 && "yes" āϕ⧀āĻ­āĻžāĻŦ⧇ āĻœā§‹āϟ āĻŦāĻžāρāϧ⧇: precedence-āĻāϰ āĻ•ā§āϰāĻŽā§‡ āϚāĻžāϰāϟāĻž āϧāĻžāĻĒ āĻāĻ• āϞāĻžāχāύ, āϚāĻžāϰ āϧāĻžāĻĒ: table-āĻāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āωāĻĒāϰ⧇āϰ āϏāĻžāϰāĻŋ āφāϗ⧇ āϚāϞ⧇ 1 + 2 * 3 > 6 && "yes" āϧāĻžāĻĒ 1: 2 * 3 āĻšāϞ⧋ 6 āϧāĻžāĻĒ 2: 1 + 6 āĻšāϞ⧋ 7 āϧāĻžāĻĒ 3: 7 > 6 āĻšāϞ⧋ true āϧāĻžāĻĒ 4: true && "yes" āĻšāϞ⧋ "yes" Table-āĻāϰ 6, 7, 8 āφāϰ 10 āύāĻŽā§āĻŦāϰ āϏāĻžāϰāĻŋ, āĻāχ āĻ•ā§āϰāĻŽā§‡: āφāϗ⧇ *, āϤāĻžāϰāĻĒāϰ +, āϤāĻžāϰāĻĒāϰ >, āϏāĻŦāĻžāϰ āĻļ⧇āώ⧇ &&āĨ¤ Parentheses āĻĻāĻŋāϝāĻŧ⧇ āϞāĻŋāĻ–āϞ⧇: ((1 + (2 * 3)) > 6) && "yes"

āϞāĻžāχāύāϟāĻž āύāĻŋāĻœā§‡ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–ā§‹, āϧāĻžāĻĒāϗ⧁āϞ⧋ āϝ⧇ āωāĻ¤ā§āϤāϰ āĻĻ⧇āϝāĻŧ, āĻ āĻŋāĻ• āϏ⧇āϟāĻžāχ āĻĒāĻžāĻŦ⧇āĨ¤

console.log(1 + 2 * 3 > 6 && "yes");
console.log(((1 + (2 * 3)) > 6) && "yes");
yes
yes

āϝ⧇āϟāĻž āύāĻŋāϝāĻŧ⧇ āύāĻŋāĻļā§āϚāĻŋāϤ āύāĻž, āϤāĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāϝāĻŧāĻŽāϟāĻž āϏ⧋āϜāĻž: āϏāĻ¨ā§āĻĻ⧇āĻš āĻšāϞ⧇ parentheses āĻŦāϏāĻžāĻ“āĨ¤ āĻ–āϰāϚ āĻ•āĻŋāϛ⧁āχ āύāĻž, āφāϰ āĻĒāϰ⧇āϰ āĻĒāĻžāĻ āĻ•āϕ⧇ āĻāχ table āϖ⧁āϞ⧇ āĻŦāϏāϤ⧇ āĻšāϝāĻŧ āύāĻžāĨ¤

Operator āϝāĻ–āύ āĻŽāĻžāύāĻž āĻ•āϰ⧇: āϤāĻŋāύāϟāĻž TypeError

āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— operator āϝāĻž āĻĒāĻžāϝāĻŧ, āϤāĻžāϕ⧇āχ convert āĻ•āϰ⧇ āύ⧇āϝāĻŧāĨ¤ āϤāĻŦ⧇ āϤāĻŋāύāϟāĻž conversion-āĻ āϏ⧇ āϰāĻžāϜāĻŋ āĻšāϝāĻŧ āύāĻž, āφāϰ program āĻĨ⧇āĻŽā§‡ āϝāĻžāϝāĻŧ āĻāĻ•āϟāĻž TypeError āĻĻāĻŋāϝāĻŧ⧇āĨ¤ Playground-āĻāϰ verdict āφāϏ⧇ Runtime error, āφāϰ āĻĨāĻžāĻŽāĻžāϰ āφāϗ⧇ āϝāĻž print āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āϏ⧇āϟāĻž āĻĨ⧇āϕ⧇ āϝāĻžāϝāĻŧāĨ¤

1. Number-āĻāϰ āϏāĻžāĻĨ⧇ bigint āĻŽā§‡āĻļāĻžāύ⧋āĨ¤ āύāĻŋāϰāĻžāĻĒāĻĻ āϏ⧀āĻŽāĻžāϰ āĻŦāĻžāχāϰ⧇āϰ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāϰ āϜāĻ¨ā§āϝ n suffix-āĻāϰ āĻ•āĻĨāĻž Module 1-āĻ āĻāϏ⧇āĻ›āĻŋāϞāĨ¤

const big = 10n;
console.log(big + 5n);
console.log(big + 5);
15n
TypeError: Cannot mix BigInt and other types, use explicit conversions

Bigint āĻ•āĻ–āύ⧋ āϚ⧁āĻĒāϚāĻžāĻĒ number āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ āύāĻž, number-āĻ“ āϚ⧁āĻĒāϚāĻžāĻĒ bigint āĻšāϝāĻŧ āύāĻž, āĻ•āĻžāϰāĻŖ āϝ⧇āϕ⧋āύ⧋ āĻĻāĻŋāϕ⧇āχ āĻ…āĻ™ā§āĻ• āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āχāĻšā§āϛ⧇ āĻ•āϰ⧇ convert āĻ•āϰ⧋: big + BigInt(5) āĻĻ⧇āϝāĻŧ 15nāĨ¤ āϤ⧁āϞāύāĻž āĻ…āĻŦāĻļā§āϝ āϚāϞ⧇: 10n > 5 āĻšāϞ⧋ trueāĨ¤

2. Text-āĻāϰ āϏāĻžāĻĨ⧇ symbol āĻœā§‹āĻĄāĻŧāĻžāĨ¤ Symbol āĻšāϞ⧋ Module 1-āĻāϰ āϏ⧇āχ āĻ•āĻŽ āĻĻ⧇āĻ–āĻž primitive, āĻāĻ•āϟāĻž āĻ…āύāĻ¨ā§āϝ āϞ⧇āĻŦ⧇āϞāĨ¤

const id = Symbol("id");
console.log(typeof id);
console.log("id: " + id);
symbol
TypeError: Cannot convert a Symbol value to a string

+ āϜāĻŋāĻœā§āĻžā§‡āϏ āύāĻž āĻ•āϰ⧇āχ symbol-āϟāĻžāϕ⧇ text āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞāϤ, āφāϰ symbol āϏ⧇āϟāĻž āĻšāϤ⧇ āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤ āϤāĻžāχ āĻŽā§āĻ– āĻĢ⧁āĻŸā§‡ āϚāĻžāĻ“: String(id) āĻĻ⧇āϝāĻŧ "Symbol(id)"āĨ¤

3. āĻāĻŽāύ object, āϝāĻžāϰ primitive āĻšāĻ“āϝāĻŧāĻžāϰ āϕ⧋āύ⧋ āωāĻĒāĻžāϝāĻŧ āύ⧇āχāĨ¤ Primitive āĻšāϞ⧋ Module 1-āĻāϰ āϏāĻžāϤāϟāĻž āϏāϰāϞ type-āĻāϰ āϝ⧇āϕ⧋āύ⧋āϟāĻžāĨ¤ Node-āĻāϰ built-in querystring module āĻāĻ•āϟāĻž web address-āĻāϰ ?-āĻāϰ āĻĒāϰ⧇āϰ āϞ⧇āĻ–āĻžāϟāĻžāϕ⧇ āĻāĻ•āϟāĻž object āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤

const qs = require("querystring");
const form = qs.parse("name=Zara&age=14");
console.log(form.name, form.age);
console.log("form: " + form);
Zara 14
TypeError: Cannot convert object to primitive value

āĻāĻ•āϟāĻž object-āϕ⧇ text-āĻāϰ āϏāĻžāĻĨ⧇ āϜ⧁āĻĄāĻŧāϤ⧇ āϗ⧇āϞ⧇ engine object-āϟāĻžāϰ āĻ•āĻžāϛ⧇ āϤāĻžāϰ text āϰ⧂āĻĒāϟāĻž āϚāĻžāϝāĻŧ, āĻāĻŽāύ āĻ•āĻŋāϛ⧁ method āĻĻāĻŋāϝāĻŧ⧇, āϝ⧇āϗ⧁āϞ⧋ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— object āωāĻ¤ā§āϤāϰāĻžāϧāĻŋāĻ•āĻžāϰ⧇ āĻĒāĻžāϝāĻŧ (Module 9)āĨ¤ āĻāχ object āϏ⧇āϗ⧁āϞ⧋āϰ āϕ⧋āύ⧋āϟāĻžāχ āĻĒāĻžāϝāĻŧāύāĻŋ, āϤāĻžāχ āϚāĻžāĻ“āϝāĻŧāĻžāϰ āĻŽāϤ⧋ āĻ•āĻŋāϛ⧁ āύ⧇āχāĨ¤ āĻāϰ āĻ…āĻ‚āĻļāϗ⧁āϞ⧋ print āĻ•āϰ⧋, āĻ…āĻĨāĻŦāĻž āφāϞāĻžāĻĻāĻž argument āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĻāĻžāĻ“: console.log("form:", form) print āĻ•āϰ⧇ form: [Object: null prototype] { name: 'Zara', age: '14' }āĨ¤

āϤāĻžāĻšāϞ⧇ operator āϚ⧁āĻĒāϚāĻžāĻĒ convert āĻ•āϰ⧇, āĻļ⧁āϧ⧁ āĻāχ āϤāĻŋāύ āϜāĻžāϝāĻŧāĻ—āĻž āĻ›āĻžāĻĄāĻŧāĻž, āφāϰ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ⧋ āύāĻŋāĻœā§‡ āχāĻšā§āϛ⧇ āĻ•āϰ⧇ convert āĻ•āϰāĻž, āϝ⧇āϟāĻž lesson 03-āĻāϰ āĻŦāĻŋāώāϝāĻŧāĨ¤

Example 1: āĻŦāĻŋāϞ āĻ­āĻžāĻ— āĻ•āϰāĻž

āϤāĻŋāύ āĻŦāĻ¨ā§āϧ⧁ 1000 āϟāĻžāĻ•āĻžāϰ āĻāĻ•āϟāĻž āĻŦāĻŋāϞ āĻ­āĻžāĻ— āĻ•āϰ⧇ āĻĻ⧇āĻŦ⧇āĨ¤ āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇ āĻĻ⧇āϝāĻŧ āĻĒā§‚āĻ°ā§āĻŖ āϟāĻžāĻ•āĻžāϝāĻŧ, āφāϰ āϝāĻž āĻŦāĻžāĻĄāĻŧāϤāĻŋ āĻĨāĻžāϕ⧇ āϏ⧇āϟāĻž āϝāĻžāϝāĻŧ tip-āĻāϰ āĻŦāĻžāĻ•ā§āϏ⧇āĨ¤

const bill = 1000;
const friends = 3;
const share = Math.floor(bill / friends);
const left = bill % friends;
console.log("each pays", share);
console.log("left over", left);
console.log("check:", share * friends + left === bill);
each pays 333
left over 1
check: true

Math.floor āύāĻŋāĻšā§‡āϰ āĻĻāĻŋāϕ⧇ round āĻ•āϰ⧇, Module 1-āĻāϰ teaser-āĻ āϝ⧇āĻŽāύ āĻĻ⧇āϖ⧇āĻ›āĨ¤ āĻļ⧇āώ āϞāĻžāχāύ⧇ parentheses āϞāĻžāϗ⧇ āύāĻž: āφāϗ⧇ *, āϤāĻžāϰāĻĒāϰ +, āϤāĻžāϰāĻĒāϰ ===, āĻŽāĻžāύ⧇ table-āĻāϰ 6, 7 āφāϰ 9 āύāĻŽā§āĻŦāϰ āϏāĻžāϰāĻŋāĨ¤

Run in Compiler
Example 2: David-āĻāϰ game, āĻāĻ•āϟāĻž quest-āĻāϰ āĻĒāϰ⧇

David-āĻāϰ game āĻāĻ•āϜāύ player-āĻāϰ point, level, streak āφāϰ badge āϰāĻžāϖ⧇āĨ¤ āĻāĻ•āϟāĻž quest āĻļ⧇āώ āĻšāϞ⧇ āϚāĻžāϰāϟāĻžāχ āĻŦāĻĻāϞāĻžāϝāĻŧ, āĻĒā§āϰāϤāĻŋāϟāĻž āφāϞāĻžāĻĻāĻž operator āĻĻāĻŋāϝāĻŧ⧇āĨ¤

let xp = 180;
let level = 3;
let streak = 0;
let badge = "";
xp += 45;
streak++;
level += xp >= 200 ? 1 : 0;
badge ||= "first steps";
console.log("xp", xp, "level", level, "streak", streak);
console.log("badge:", badge);
console.log(level > 3 && streak >= 1 ? "level up!" : "keep going");
xp 225 level 4 streak 1
badge: first steps
level up!

level += xp >= 200 ? 1 : 0-āĻ āφāϗ⧇ āϤ⧁āϞāύāĻžāϟāĻž āϚāϞ⧇, āϤāĻžāϰāĻĒāϰ ternary āĻŦ⧇āϛ⧇ āύ⧇āϝāĻŧ 1, āϤāĻžāϰāĻĒāϰ += āϏ⧇āϟāĻž āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ āĻļ⧇āώ āϞāĻžāχāύāĻ“ āĻāĻ•āχāĻ­āĻžāĻŦ⧇ āϚāϞ⧇: āĻĻ⧁āχāϟāĻž āϤ⧁āϞāύāĻž, āϤāĻžāϰāĻĒāϰ &&, āϤāĻžāϰāĻĒāϰ ternaryāĨ¤ xp āĻŦāĻĻāϞ⧇ 100 āĻ•āϰ⧇ āφāĻŦāĻžāϰ āϚāĻžāϞāĻžāĻ“: level āĻĨāĻžāĻ•āĻŦ⧇ 3, āφāϰ message āĻŦāĻĻāϞ⧇ āϝāĻžāĻŦ⧇āĨ¤

Run in Compiler
Example 3: Zara-āϰ āĻĻā§‹āĻ•āĻžāύ⧇āϰ checkout

Zara-āϰ āĻĻā§‹āĻ•āĻžāύ⧇āϰ program āĻĒāĻĄāĻŧ⧇ āĻ•āϝāĻŧāϟāĻž item, āϤāĻžāĻĻ⧇āϰ āĻĻāĻžāĻŽ, āϤāĻžāϰāĻĒāϰ āϚāĻžāχāϞ⧇ āĻāĻ•āϟāĻž coupon āĻļāĻŦā§āĻĻāĨ¤ 1000 āϟāĻžāĻ•āĻž āĻŦāĻž āϤāĻžāϰ āĻŦ⧇āĻļāĻŋ order-āĻ 10% āĻ›āĻžāĻĄāĻŧāĨ¤ Delivery-āϰ āĻ–āϰāϚ 60, āϤāĻŦ⧇ āĻ›āĻžāĻĄāĻŧ⧇āϰ āĻĒāϰ⧇ order 500 āĻŦāĻž āϤāĻžāϰ āĻŦ⧇āĻļāĻŋ āĻšāϞ⧇, āĻ…āĻĨāĻŦāĻž coupon FREESHIP āĻšāϞ⧇, delivery freeāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

const n = nextInt();
let total = 0;
for (let i = 0; i < n; i++) {
  total += nextInt();
}
const coupon = next() ?? "none";
const discount = total >= 1000 ? total / 10 : 0;
const delivery = total - discount >= 500 || coupon === "FREESHIP" ? 0 : 60;
out.push("total: " + total);
out.push("discount: " + discount);
out.push("coupon: " + coupon);
out.push("delivery: " + delivery);
out.push("to pay: " + (total - discount + delivery));

console.log(out.join("\n"));
total: 1150
discount: 115
coupon: none
delivery: 0
to pay: 1035

āĻ“āχ output-āϟāĻž input 3 450 300 400-āĻāϰ āϜāĻ¨ā§āϝ, āϕ⧋āύ⧋ coupon āύ⧇āχāĨ¤ for loop-āϟāĻž Module 1-āĻāϰ (lesson 05); āĻ āĻŋāĻ•āĻŽāϤ⧋ āĻļ⧇āĻ–āĻžāĻŦ⧇ Module 4āĨ¤ Input āĻļ⧇āώ āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇ next() āĻĻ⧇āϝāĻŧ undefined, āφāϰ ?? āϏ⧇āϟāĻžāϕ⧇ āĻŦāĻžāύāĻžāϝāĻŧ "none"āĨ¤

delivery-āϰ āϞāĻžāχāύāϟāĻž table āĻŽāĻŋāϞāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧā§‹: āĻŦāĻŋāϝāĻŧā§‹āĻ—, āĻĻ⧁āχāϟāĻž āϤ⧁āϞāύāĻž, ||, āϤāĻžāϰāĻĒāϰ ternaryāĨ¤ Input 2 200 150 FREESHIP āĻĻāĻŋāϞ⧇ āφāϏ⧇ delivery: 0 āφāϰ to pay: 350āĨ¤ āĻļ⧇āώ push-āĻāϰ parentheses āύāĻž āĻĨāĻžāĻ•āϞ⧇ + āφāϗ⧇āχ text āϜ⧁āĻĄāĻŧ⧇ āĻĢ⧇āϞāϤ, āφāϰ āϤāĻ–āύ āĻŦāĻŋāϝāĻŧā§‹āĻ—āϟāĻž āĻĻāĻŋāϤ NaNāĨ¤

Run in Compiler

āĻāϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇

  • Next.js configurationāĨ¤ Next.js documentation-āĻāϰ assetPrefix page āĻĒā§āϰāĻĨāĻŽā§‡ phase === PHASE_DEVELOPMENT_SERVER āĻĻāĻŋāϝāĻŧ⧇ isDev āĻŦāϏāĻžāϝāĻŧ, āϤāĻžāϰāĻĒāϰ āϞ⧇āϖ⧇ assetPrefix: isDev ? undefined : 'https://cdn.mydomain.com'āĨ¤ āĻāĻ•āϟāĻž strict equality āφāϰ āĻāĻ•āϟāĻž ternary āĻŽāĻŋāϞ⧇ āĻāĻ•āϟāĻž setting āĻŦ⧇āϛ⧇ āύāĻŋāĻšā§āϛ⧇āĨ¤
  • TypeScriptāĨ¤ āĻĒ⧁āϰāύ⧋ JavaScript (target ES2019) āĻŦāĻžāύāĻžāϤ⧇ āĻŦāϞāϞ⧇ TypeScript 5.9 config?.server?.port ?? 3000-āϕ⧇ āύāϤ⧁āύ āĻ•āϰ⧇ āϞ⧇āϖ⧇ === null, === void 0 āφāϰ ? : āĻĻāĻŋāϝāĻŧ⧇āĨ¤ void 0-āĻāϰ āĻĻ⧇āĻ–āĻž āϤ⧁āĻŽāĻŋ āĻāĻ–āĻžāύ⧇āχ āĻĒāĻžāĻŦ⧇, āφāϰ āĻāϟāĻž āĻšā§āĻŦāĻšā§ āĻĻ⧇āĻ–āĻžāϝāĻŧ ?. āφāϰ ?? āĻ āĻŋāĻ• āϕ⧀ āϕ⧀ check āĻ•āϰ⧇āĨ¤
  • ESLintāĨ¤ āĻāϰ no-cond-assign rule recommended set-āĻ āϚāĻžāϞ⧁ āĻĨāĻžāϕ⧇, āφāϰ if-āĻāϰ condition-āĻāϰ āĻ­āĻŋāϤāϰ⧇ assignment āĻĒ⧇āϞ⧇ āϧāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ Maria-āϰ if (x = 5) āϚāĻžāϞāĻžāύ⧋āϰ āφāϗ⧇āχ āĻāϟāĻž āĻĻ⧇āĻ–āĻŋāϝāĻŧ⧇ āĻĻāĻŋāϤāĨ¤

āϝ⧇ āϭ⧁āϞāϗ⧁āϞ⧋ āϏāĻŦāĻžāχ āĻ•āϰ⧇

ā§§. āĻ…āĻ™ā§āĻ• āĻŦāχāϝāĻŧ⧇āϰ āĻŽāϤ⧋ āĻ•āϰ⧇ āϞ⧇āĻ–āĻž range-āĻāϰ testāĨ¤

const temp = 30;
console.log(10 < temp < 20);
console.log(10 < temp && temp < 20);
true
false

āϕ⧋āύ⧋ message āύ⧇āχ, āφāϰ āĻĒā§āϰāĻĨāĻŽ āωāĻ¤ā§āϤāϰāϟāĻž āϭ⧁āϞ: 30 āϤ⧋ 10 āφāϰ 20-āĻāϰ āĻŽāĻžāĻā§‡ āύāĻžāĨ¤ 10 < temp āĻĻ⧇āϝāĻŧ true, āϤāĻžāϰāĻĒāϰ true < 20-āĻ true āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ 1, āφāϰ 1 āϤ⧋ 20-āĻāϰ āĻšā§‡āϝāĻŧ⧇ āϛ⧋āϟāĨ¤ āĻĻ⧁āχāϟāĻž āϤ⧁āϞāύāĻž && āĻĻāĻŋāϝāĻŧ⧇ āĻœā§‹āĻĄāĻŧā§‹, āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āϞāĻžāχāύ⧇ āϝ⧇āĻŽāύāĨ¤ āϤ⧁āĻŽāĻŋ āĻĒā§āϰāĻĨāĻŽāϟāĻžāχ āϞāĻŋāĻ–āĻŦ⧇, āĻ•āĻžāϰāĻŖ āĻ…āĻ™ā§āϕ⧇ āĻāĻ­āĻžāĻŦ⧇āχ āϞ⧇āϖ⧇āĨ¤

⧍. next() āĻĻāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧāĻž āĻĻ⧁āχāϟāĻž token-āĻāϰ āϤ⧁āϞāύāĻžāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

const oldPrice = next();
const newPrice = next();
out.push(newPrice > oldPrice ? "went up" : "did not go up");

console.log(out.join("\n"));
did not go up

Input 90 150-āĻāϰ āϜāĻ¨ā§āϝ Bob-āĻāϰ program āĻŦāϞ⧇ āĻĻāĻžāĻŽ āĻŦāĻžāĻĄāĻŧ⧇āύāĻŋāĨ¤ āĻĻ⧁āχāϟāĻž token-āχ string, āϤāĻžāχ "150" > "90" āϤ⧁āϞāύāĻž āĻ•āϰ⧇ "1" āφāϰ "9": falseāĨ¤ nextInt() āĻĻāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧā§‹, āϤāĻ–āύ āĻŦāϞāĻŦ⧇ went upāĨ¤ āϤ⧁āĻŽāĻŋ next() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇, āĻ•āĻžāϰāĻŖ token-āϗ⧁āϞ⧋ āĻĻ⧇āĻ–āϤ⧇ number-āĻāϰ āĻŽāϤ⧋āχāĨ¤

ā§Š. Power-āĻāϰ āφāϗ⧇ minus āϚāĻŋāĻšā§āύāĨ¤

console.log(-2 ** 2);

āϕ⧋āύ⧋ āϞāĻžāχāύ āϚāϞāĻžāϰ āφāϗ⧇āχ program āĻĨ⧇āĻŽā§‡ āϝāĻžāϝāĻŧ: SyntaxError: Unary operator used immediately before exponentiation expression. Parenthesis must be used to disambiguate operator precedenceāĨ¤ āĻāϰ āĻŽāĻžāύ⧇ 4-āĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, -4-āĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āϤāĻžāχ JavaScript āϤ⧋āĻŽāĻžāϕ⧇āχ āĻŦ⧇āϛ⧇ āύāĻŋāϤ⧇ āĻŦāϞ⧇: (-2) ** 2 āĻšāϞ⧋ 4, āφāϰ -(2 ** 2) āĻšāϞ⧋ -4āĨ¤ āϤ⧁āĻŽāĻŋ āĻāϟāĻž parentheses āĻ›āĻžāĻĄāĻŧāĻžāχ āϞāĻŋāĻ–āĻŦ⧇, āĻ•āĻžāϰāĻŖ āĻĻ⧇āĻ–āϤ⧇ āĻ…āĻ™ā§āϕ⧇āϰ āĻŽāϤ⧋āĨ¤

ā§Ē. āĻāĻ•āχ expression-āĻ ?? āφāϰ || āĻŽā§‡āĻļāĻžāύ⧋āĨ¤

const typed = "";
const saved = null;
const name = typed || saved ?? "guest";

āϕ⧋āύ⧋ āϞāĻžāχāύ āϚāϞāĻžāϰ āφāϗ⧇āχ program āĻĨ⧇āĻŽā§‡ āϝāĻžāϝāĻŧ: SyntaxError: Unexpected token '??'āĨ¤ āĻĻ⧁āχāϟāĻžāϰ āϕ⧋āύāϟāĻž āφāϗ⧇ āϚāĻžāϞāĻžāϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›, language āϏ⧇āϟāĻž āφāĻ¨ā§āĻĻāĻžāϜ āĻ•āϰāϤ⧇ āϰāĻžāϜāĻŋ āύāĻžāĨ¤ āϝ⧇āϟāĻž āĻŦā§‹āĻāĻžāϤ⧇ āϚāĻžāĻ“, āϏ⧇āχ parentheses āĻŦāϏāĻžāĻ“: (typed || saved) ?? "guest"āĨ¤ āϤ⧁āĻŽāĻŋ āĻāϟāĻž āϞāĻŋāĻ–āĻŦ⧇, āĻ•āĻžāϰāĻŖ āĻĻ⧁āχāϟāĻžāχ default āĻŦāϏāĻžāϝāĻŧ, āĻĻ⧇āϖ⧇ āĻāĻ• āĻĒāϰāĻŋāĻŦāĻžāϰ⧇āϰ āĻŽāύ⧇ āĻšāϝāĻŧāĨ¤

āĻŽāĻžāĻĨāĻž āĻ–āĻžāϟāĻžāĻ“

Kenji āĻāĻ•āϟāĻž volume setting āϰāĻžāϖ⧇, āϝ⧇āϟāĻž player āĻāĻ•āĻĻāĻŽ āĻ•āĻŽāĻŋāϝāĻŧ⧇ 0 āĻ•āϰ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇āĨ¤ āϤāĻžāϰāĻĒāϰ āĻ“ āĻĻ⧁āχāĻ­āĻžāĻŦ⧇ āϏ⧇āϟāĻž āĻĒāĻĄāĻŧ⧇āĨ¤

console.log(0 || "default");
console.log(0 ?? "default");

āϚāĻžāϞāĻžāύ⧋āϰ āφāϗ⧇ āĻĻ⧁āχ āϞāĻžāχāύ⧇āϰ output āφāĻ¨ā§āĻĻāĻžāϜ āĻ•āϰ⧋āĨ¤ āϕ⧋āύ āϞāĻžāχāύ player-āĻāϰ āĻĒāĻ›āĻ¨ā§āĻĻāϟāĻž āϰāĻžāϖ⧇, āφāϰ āϕ⧋āύāϟāĻž āĻĢ⧇āϞ⧇ āĻĻ⧇āϝāĻŧ?

0 truthy āύāĻž falsy? 0 āĻ•āĻŋ null āĻŦāĻž undefined? āĻĒā§āϰāϤāĻŋāϟāĻž operator āĻāχ āĻĻ⧁āχāϟāĻž āĻĒā§āϰāĻļā§āύ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻžāχ āĻ•āϰ⧇āĨ¤

āĻ…āύ⧁āĻļā§€āϞāύ ā§§āϏāĻšāϜ

āϕ⧋āύ⧋ expression-āĻāϰ āĻĢāϞ āφāϗ⧇ āφāĻ¨ā§āĻĻāĻžāϜ āύāĻž āĻ•āϰ⧇ Amara āĻ•āĻ–āύ⧋ āϏ⧇āϟāĻž āϚāĻžāϞāĻžāϝāĻŧ āύāĻžāĨ¤ āύāĻŋāĻšā§‡āϰ āĻĻāĻļāϟāĻž āϞāĻžāχāύ⧇āϰ āĻĒā§āϰāϤāĻŋāϟāĻžāϰ āϜāĻ¨ā§āϝ āϤ⧋āĻŽāĻžāϰ āφāĻ¨ā§āĻĻāĻžāϜ āϞāĻŋāϖ⧇ āĻĢ⧇āϞ⧋: value āĻ•āϤ, āφāϰ āϤāĻžāϰ type āϕ⧀āĨ¤ āϤāĻžāϰāĻĒāϰ program āϚāĻžāϞāĻžāĻ“, āφāϰ āφāĻ¨ā§āĻĻāĻžāϜāϗ⧁āϞ⧋ āĻŽāĻŋāϞāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–ā§‹āĨ¤

Input. āύ⧇āχāĨ¤

Output. āĻĻāĻļāϟāĻž āϞāĻžāχāύ, āĻĒā§āϰāϤāĻŋāϟāĻž expression-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻžāĨ¤ āϝ⧇āϟāĻž āϭ⧁āϞ āφāĻ¨ā§āĻĻāĻžāϜ āĻ•āϰ⧇āĻ›āĻŋāϞ⧇, āϏ⧇āϟāĻž āϕ⧋āύ āĻ…āĻ‚āĻļ⧇ āĻŦā§‹āĻāĻžāύ⧋ āφāϛ⧇ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰ⧋āĨ¤

// Write your ten predictions first, then run.
console.log(7 % 3 + 2 ** 3);
console.log("8" * "2");
console.log("25" < "3");
console.log(10 / 4 > 2 && "big");
console.log(null || 0 || "last");
console.log(false ?? "off");
console.log(!!"false");
console.log(1 + 2 === 3 ? "ok" : "odd");
console.log(typeof (4 > 3));
console.log(2 ** 3 ** 2);

āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ grade āĻšāϝāĻŧ āύāĻžāĨ¤ āφāϏāϞ āĻ•āĻžāϜāϟāĻž āĻšāϞ⧋ āϚāĻžāϞāĻžāύ⧋āϰ āφāϗ⧇āϰ āφāĻ¨ā§āĻĻāĻžāϜāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ⧍āϏāĻšāϜ

Alice āĻāĻ•āϟāĻž āϰāĻžāĻ¨ā§āύāĻžāϰ āĻĒā§āϰāϤāĻŋāϝ⧋āĻ—āĻŋāϤāĻžāϰ āĻŦāĻŋāϚāĻžāϰāĻ•āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻĒāĻĻ⧇ āϤāĻŋāύāϜāύ āĻŦāĻŋāϚāĻžāϰāĻ• āύāĻŽā§āĻŦāϰ āĻĻ⧇āύ, āφāϰ āĻĒāĻĻāϟāĻžāϰ āĻĨāĻžāϕ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ­āĻžāϞ⧋ āύāĻŽā§āĻŦāϰāϟāĻžāĨ¤ āĻĒā§āϰāϤāĻŋ āϤāĻŋāύāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧāϟāĻž print āĻ•āϰ⧋āĨ¤ āĻļ⧁āϧ⧁ ternary operator āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇: if āύāĻž, Math.max-āĻ“ āύāĻžāĨ¤

Input. āĻāĻ• āϞāĻžāχāύ⧇ t, āϤāĻžāϰāĻĒāϰ t-āϟāĻž āϞāĻžāχāύ, āĻĒā§āϰāϤāĻŋāϟāĻžāϝāĻŧ āϤāĻŋāύāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻžāĨ¤

Output. t-āϟāĻž āϞāĻžāχāύ: āĻĒā§āϰāϤāĻŋ āϤāĻŋāύāϟāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧāϟāĻž, JavaScript āϝ⧇āĻ­āĻžāĻŦ⧇ print āĻ•āϰ⧇āĨ¤

Constraints. 1 <= t <= 10000āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻžāϝāĻŧ 1 āĻĨ⧇āϕ⧇ 20āϟāĻž āĻ…āĻ•ā§āώāϰāĨ¤

Sample. Input 3, āϤāĻžāϰāĻĒāϰ 3 9 4, -1.5 -7 -2 āφāϰ 5 5 5 āĻĻāĻŋāϞ⧇ āϤāĻŋāύ āϞāĻžāχāύ⧇ 9, -1.5 āφāϰ 5āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

largest-of-three āύāĻžāĻŽā§‡ grade āĻšāϝāĻŧāĨ¤ Submit āĻ•āϰāĻžāϰ āφāϗ⧇ āϏāĻŽāĻžāύ āϏāĻ‚āĻ–ā§āϝāĻž, negative āϏāĻ‚āĻ–ā§āϝāĻž āφāϰ āĻĻāĻļāĻŽāĻŋāĻ• āĻĻāĻŋāϝāĻŧ⧇ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–ā§‹, āφāϰ āĻĒāĻĄāĻŧā§‹ nextInt() āĻĻāĻŋāϝāĻŧ⧇: token-āϕ⧇ string āĻšāĻŋāϏ⧇āĻŦ⧇ āϤ⧁āϞāύāĻž āĻ•āϰāϞ⧇ āωāĻ¤ā§āϤāϰ āϭ⧁āϞ āφāϏ⧇āĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ā§ŠāĻŽāĻžāĻāĻžāϰāĻŋ

Maria-āϰ sign-up form āĻĒā§āϰāϤāĻŋāϟāĻž field āĻĒāĻžāĻ āĻžāϝāĻŧ āĻāĻ• āϞāĻžāχāύ⧇āĨ¤ āϕ⧋āύ⧋ field āύāĻž āĻĨāĻžāĻ•āϞ⧇ āφāϏ⧇ null āĻŦāĻž undefined āĻļāĻŦā§āĻĻāϟāĻž; āϕ⧇āω āχāĻšā§āϛ⧇ āĻ•āϰ⧇ āĻ–āĻžāϞāĻŋ āϰāĻžāĻ–āϞ⧇ āφāϏ⧇ āĻāĻ•āϟāĻž āĻ–āĻžāϞāĻŋ āϞāĻžāχāύ, āφāϰ āϏ⧇āϟāĻž āĻ–āĻžāϞāĻŋāχ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž field bracket-āĻāϰ āĻ­āĻŋāϤāϰ⧇ print āĻ•āϰ⧋, āύāĻž-āĻĨāĻžāĻ•āĻž field-āĻāϰ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ defaultāĨ¤

Input. āĻāĻ• āϞāĻžāχāύ⧇ n, āϤāĻžāϰāĻĒāϰ n-āϟāĻž āϞāĻžāχāύāĨ¤ āϝ⧇ āϞāĻžāχāύ āĻšā§āĻŦāĻšā§ null, āϤāĻžāϰ āĻŽāĻžāύ⧇ null; āϝ⧇ āϞāĻžāχāύ āĻšā§āĻŦāĻšā§ undefined, āϤāĻžāϰ āĻŽāĻžāύ⧇ undefined; āĻŦāĻžāĻ•āĻŋ āϝ⧇āϕ⧋āύ⧋ āϞāĻžāχāύ, āĻ–āĻžāϞāĻŋ āϞāĻžāχāύāĻ“, āĻšāϞ⧋ āϏ⧇āχ textāĨ¤

Output. n-āϟāĻž āϞāĻžāχāύ: āĻĒā§āϰāϤāĻŋāϟāĻž field-āĻāϰ āϜāĻ¨ā§āϝ [, āϤāĻžāϰāĻĒāϰ value-āϟāĻž, āĻ…āĻĨāĻŦāĻž value null āĻŦāĻž undefined āĻšāϞ⧇ default, āϤāĻžāϰāĻĒāϰ ]āĨ¤

Constraints. 1 <= n <= 10000āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž field-āĻāϰ āϞāĻžāχāύ⧇ 0 āĻĨ⧇āϕ⧇ 60āϟāĻž āĻ…āĻ•ā§āώāϰ, āφāϰ āĻļ⧇āώ āϞāĻžāχāύāϟāĻž āĻ•āĻ–āύ⧋ āĻ–āĻžāϞāĻŋ āύāĻžāĨ¤

Sample. Input 4, āϤāĻžāϰāĻĒāϰ āϞāĻžāχāύāϗ⧁āϞ⧋ Zara, null, āĻāĻ•āϟāĻž āĻ–āĻžāϞāĻŋ āϞāĻžāχāύ āφāϰ undefined āĻĻāĻŋāϞ⧇ āϚāĻžāϰ āϞāĻžāχāύ⧇ [Zara], [default], [] āφāϰ [default]āĨ¤

āϞāĻžāχāύ āĻ–āĻžāϞāĻŋ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āϤāĻžāχ starter-āϟāĻž lines variant: token-āĻāϰ āĻĻ⧁āχāϟāĻž āϞāĻžāχāύ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ const lines = input.split("\n"); āφāϰ āĻāĻŽāύ āĻāĻ•āϟāĻž next(), āϝ⧇āϟāĻž āĻĒ⧁āϰ⧋ āĻāĻ•āϟāĻž āϞāĻžāχāύ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const lines = input.split("\n");
let at = 0;
const next = () => lines[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

given-or-default āύāĻžāĻŽā§‡ grade āĻšāϝāĻŧāĨ¤ āĻ–āĻžāϞāĻŋ āϞāĻžāχāύ, 0 āϞ⧇āĻ–āĻž āϞāĻžāχāύ, āφāϰ āĻŦāĻĄāĻŧ āĻšāĻžāϤ⧇āϰ āĻ…āĻ•ā§āώāϰ⧇ NULL āϞ⧇āĻ–āĻž āϞāĻžāχāύ āĻĻāĻŋāϝāĻŧ⧇ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–ā§‹; āĻļ⧇āώ⧇āϰāϟāĻž text, null āύāĻžāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ā§ĒāĻ•āĻ āĻŋāύ

Kenji āĻŦāϞ⧇, āĻ“āϰ parentheses āϞāĻžāϗ⧇ āύāĻž, āĻ•āĻžāϰāĻŖ table-āϟāĻž āĻ“āϰ āϜāĻžāύāĻžāĨ¤ āύāĻŋāĻšā§‡ āĻ“āϰ āϞ⧇āĻ–āĻž āĻ›āϝāĻŧāϟāĻž āϞāĻžāχāύāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž out.push-āĻāϰ āύāĻŋāĻšā§‡ āφāϰ⧇āĻ•āϟāĻž āϝ⧋āĻ— āĻ•āϰ⧋, āĻāĻ•āχ expression, āĻ•āĻŋāĻ¨ā§āϤ⧁ engine āϝ⧇āĻ­āĻžāĻŦ⧇ āĻœā§‹āϟ āĻŦāĻžāρāϧ⧇ āĻ āĻŋāĻ• āϏ⧇āĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āĻĻāϞ parentheses-āĻ āϘāĻŋāϰ⧇āĨ¤ āϚāĻžāϞāĻžāĻ“: āĻĒā§āϰāϤāĻŋ āĻœā§‹āĻĄāĻŧāĻž āϞāĻžāχāύ⧇ āĻāĻ•āχ value print āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤

const out = [];
const a = 0;
const b = "";
const c = "c";

out.push(1 + 2 * 3 ** 2);
out.push(10 - 4 - 3 ** 0);
out.push(a || b && c);
out.push(!a == b);
out.push(typeof 1 + 1);
out.push("a" + 1 + 2 * 3);

console.log(out.join("\n"));

āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ grade āĻšāϝāĻŧ āύāĻžāĨ¤ āĻ›āϝāĻŧāϟāĻžāϰ āĻĻ⧁āχāϟāĻž āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻŽāĻžāύ⧁āώāϕ⧇ āϚāĻŽāϕ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻ“āχ āĻĻ⧁āχāϟāĻžāϰ āĻĒā§āϰāϤāĻŋāϟāĻž āĻāĻ• āĻŦāĻžāĻ•ā§āϝ⧇ āĻŦ⧁āĻāĻŋāϝāĻŧ⧇ āĻŦāϞ⧋, precedence table-āĻāϰ āϕ⧋āύ āϏāĻžāϰāĻŋ āĻĻāĻžāϝāĻŧā§€ āϤāĻžāϰ āύāĻžāĻŽ āϧāϰ⧇āĨ¤

Run in Compiler

āϏāϚāϰāĻžāϚāϰ āϝ⧇ āĻĒā§āϰāĻļā§āύāϗ⧁āϞ⧋ āφāϏ⧇

  • Precedence table-āϟāĻž āĻ•āĻŋ āĻŽā§āĻ–āĻ¸ā§āĻĨ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇?

    āύāĻžāĨ¤ āϜāĻžāύ⧋ +-āĻāϰ āφāϗ⧇ *, && āφāϰ ||-āĻāϰ āφāϗ⧇ āϤ⧁āϞāύāĻž, āφāϰ āϏāĻŦāĻžāϰ āĻļ⧇āώ⧇ assignmentāĨ¤ āĻŦāĻžāĻ•āĻŋ āϏāĻŦāĻ•āĻŋāϛ⧁āϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ parentheses āĻŦāϏāĻžāĻ“āĨ¤ āϝ⧇ code āĻĒāĻĄāĻŧāϤ⧇ table āϞāĻžāϗ⧇, āϏ⧇āχ code-āĻ āφāϏāϞ⧇ parentheses āϞāĻžāϗ⧇āĨ¤

  • && āφāϰ || āϏ⧋āϜāĻžāϏ⧁āϜāĻŋ true āĻŦāĻž false āĻĻ⧇āϝāĻŧ āύāĻž āϕ⧇āύ?

    Operand āĻĢ⧇āϰāϤ āĻĻāĻŋāϞ⧇ default āĻŦāϏāĻžāύ⧋āϟāĻž āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ āĻāĻ•āϟāĻž āϛ⧋āϟ expression, name || "guest"āĨ¤ if āĻŦāĻž ternary-āϰ āĻ­āĻŋāϤāϰ⧇ āĻ•āĻŋāϛ⧁āχ āĻ­āĻžāϙ⧇ āύāĻž, āĻ•āĻžāϰāĻŖ āĻĢāϞāϟāĻžāϕ⧇ āĻāĻŽāύāĻŋāϤ⧇āĻ“ truthy āĻŦāĻž falsy āĻšāĻŋāϏ⧇āĻŦ⧇āχ āĻĒāĻĄāĻŧāĻž āĻšāϝāĻŧāĨ¤ āϏāĻ¤ā§āϝāĻŋāχ boolean āϞāĻžāĻ—āϞ⧇ āϞ⧇āĻ–ā§‹ Boolean(x) āĻŦāĻž !!xāĨ¤

  • typeof āϕ⧇āύ operator, function āύāĻž?

    Operator āϕ⧋āύ⧋ āύāĻžāĻŽ engine āϖ⧁āρāĻœā§‡ āĻĻ⧇āĻ–āĻžāϰ āφāϗ⧇āχ āϏ⧇āϟāĻžāϰ āĻĻāĻŋāϕ⧇ āϤāĻžāĻ•āĻžāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāϜāĻ¨ā§āϝāχ āĻ•āĻ–āύ⧋ declare āύāĻž āĻ•āϰāĻž āύāĻžāĻŽā§‡āϰ āωāĻĒāϰ typeof throw āύāĻž āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ "undefined" (Module 1, lesson 04)āĨ¤ typeof(x)-āĻ“ āϚāϞ⧇, āĻ•āĻžāϰāĻŖ āĻ“āĻ–āĻžāύ⧇ parentheses āĻļ⧁āϧ⧁ āĻœā§‹āϟ āĻŦāĻžāρāϧ⧇āĨ¤

āĻŽā§‚āϞ āĻ•āĻĨāĻž

  • āĻ—āĻŖāĻŋāϤ⧇āϰ operator operand-āϕ⧇ number āĻŦāĻžāύāĻžāϝāĻŧ, āĻļ⧁āϧ⧁ āϕ⧋āύ⧋ āĻĒāĻžāĻļ⧇ string āĻĨāĻžāĻ•āϞ⧇ + āĻ›āĻžāĻĄāĻŧāĻž; % āĻŦāĻžāρ operand-āĻāϰ āϚāĻŋāĻšā§āύ āϰāĻžāϖ⧇, āφāϰ ** āĻœā§‹āϟ āĻŦāĻžāρāϧ⧇ āĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāρāϝāĻŧ⧇āĨ¤
  • x++ āĻĻ⧇āϝāĻŧ āĻĒ⧁āϰāύ⧋ value, ++x āĻĻ⧇āϝāĻŧ āύāϤ⧁āύāϟāĻž; āĻāĻ•āĻž āĻāĻ• āϞāĻžāχāύ⧇ āĻĻ⧁āχāϟāĻžāχ āĻāĻ•āχ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤
  • && āφāϰ || āĻāĻ•āϟāĻž operand āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ, āϤāĻžāχ || default āĻŦāϏāĻžāϝāĻŧ; ?? default āĻŦāϏāĻžāϝāĻŧ āĻļ⧁āϧ⧁ null āφāϰ undefined-āĻāϰ āĻŦ⧇āϞāĻžāϝāĻŧāĨ¤
  • āĻĻ⧁āχāϟāĻž string āϤ⧁āϞāύāĻž āĻšāϝāĻŧ text āĻšāĻŋāϏ⧇āĻŦ⧇, āϤāĻžāχ "10" < "9"; number āϤ⧁āϞāύāĻž āĻ•āϰāϤ⧇ Number() āĻĻāĻŋāϝāĻŧ⧇ convert āĻ•āϰ⧋, āĻ…āĻĨāĻŦāĻž nextInt() āĻĻāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧā§‹āĨ¤
  • = value āϰāĻžāϖ⧇ āφāϰ āϰāĻžāĻ–āĻž value-āϟāĻžāχ āĻĻ⧇āϝāĻŧ, āϤāĻžāχ if (x = 5) āϏāĻŦāϏāĻŽāϝāĻŧ āϚāϞ⧇; āϤ⧁āϞāύāĻž āĻ•āϰ⧋ === āĻĻāĻŋāϝāĻŧ⧇, āφāϰ precedence āύāĻŋāϝāĻŧ⧇ āϏāĻ¨ā§āĻĻ⧇āĻš āĻšāϞ⧇ parentheses āĻŦāϏāĻžāĻ“āĨ¤
  • Number-āĻāϰ āϏāĻžāĻĨ⧇ bigint āĻŽā§‡āĻļāĻžāϞ⧇, text-āĻāϰ āϏāĻžāĻĨ⧇ symbol āϜ⧁āĻĄāĻŧāϞ⧇, āφāϰ text āϰ⧂āĻĒ āύ⧇āχ āĻāĻŽāύ object āϜ⧁āĻĄāĻŧāϞ⧇ operator āĻāĻ•āϟāĻž TypeError throw āĻ•āϰ⧇āĨ¤
  • āφāϰāĻ“ āĻ—āĻ­ā§€āϰ⧇: Interview Pack, output puzzle, āĻĒā§āϰāĻļā§āύ āφāϰ bug gallery (Pro)āĨ¤

āĻāϰāĻĒāϰ lesson 03 āĻ›āϝāĻŧāϟāĻž āĻĒ⧁āϰ⧋ program-āĻ āχāĻšā§āϛ⧇ āĻ•āϰ⧇ convert āĻ•āϰāĻŦ⧇, āĻļ⧁āϰ⧁ āĻšāĻŦ⧇ āĻāĻŽāύ āĻāĻ•āϟāĻž calculator āĻĻāĻŋāϝāĻŧ⧇, āϝ⧇āϟāĻž āĻĻ⧁āχāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž āφāϰ āĻāĻ•āϟāĻž operator āĻĒāĻĄāĻŧ⧇āĨ¤

lesson ⧍ āĻļ⧇āώ

āĻļ⧇āώ āĻšāϞ⧇ āϚāĻŋāĻšā§āύ āĻĻāĻŋāύ, āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āφāĻĒāύāĻžāϰ āϏāĻžāĻĨ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻĒāϰ⧇āϰāϟāĻž: āĻĒ⧁āϰ⧋ program: āχāĻšā§āϛ⧇ āĻ•āϰ⧇ convert āĻ•āϰāĻž

āĻĒā§āϰāϤāĻŋāϟāĻž operator, āĻāĻ•āϟāĻž āĻāĻ•āϟāĻž āĻ•āϰ⧇ | Learn JavaScript | Progsity