No site found for btvca-curriculum.herokuapp.com; using Bootcamp content.

Numbers

  • JavaScript has a default built-in type called Number.
  • Number represents decimal numbers, such as 0, 1, 42, 3.14159, or -2.71828.
  • JavaScript does NOT have a special type for Integers, like many other languages.

MDN: JavaScript Numbers

Numerical Operators

The following operations work on numbers:

Operand Name Example =
+ addition 3 + 2 5
- subtraction 3 - 2 1
* multiplication 3 * 2 6
/ division 3 / 2 1.5
% modulus ("remainder") 3 % 2 1
** exponentiation ("power of") 3 ** 2 9

LAB: Age Calculator

Answer the following questions using interactive node, or a JavaScript file.

  • How many seconds are in an hour?
  • How many seconds are in a week?
  • How many seconds are in a year?
  • How many seconds old are you this year?
  • How many years old is someone who is 1 billion seconds old?

Order of operations

Question: What is 1 plus 2 times 3?

Answer: It depends on if there are parenthesis or not.

(1 + 2) * 3 == 9
1 + (2 * 3) == 7

Parentheses are Explicit

4 + 5 * 6 ** 2 / 4
(((4 + 5) * 6) ** 2) / 4

When in doubt, use parentheses to make operation order explicit. Alternatively, break the expression up, and use variables.

LAB: Is Divisible By

One number is divisible by another if you divide them and the remainder is 0.

Write some code to check the following

  • Is 100 is divisible by 5
  • Is 100 is divisible by 8
  • Is 330 is divisible by 11
  • Is 337 is divisible by 7

Hint: remember the modulus operator %

Strings vs. Numbers

Sometimes Strings and Numbers combine in ways that are unexpected.

1 + 2
"1" + "2"
"1 + 2"

In the above examples, Strings are coerced into Numbers. Why?

Strings and Numbers Combined

Coercion of Strings to Numbers, or Numbers to Strings can be confusing.

Even though Strings and Numbers are different TYPES, JavaScript will convert one to the other.

"1" + 2
// 12

Why do you think the Number is converted to a String this time?

Type Conversion

Instead of depending on implicit coercion, you can explicitly convert a Number to a String, or vice-versa.

(12).toString()
// "12"

Can you think of other ways to convert a Number to a String?

Converting a String to a Number

There are also many ways to convert a String to a Number

One of the easiest and cleanest is the unary + operator

expression value
+"12" 12
+"012" 12
+"0.2" 0.2
+"cheese" NaN
+"0" 0
+"" 0
+" " 0

See also: MDN: String to Number Conversion

Large Floating-Point Numbers

Some large numbers cannot be represented accurately in floating-point.

For instance, look closely at the results below.

2 ** 53
// 9007199254740992


2 ** 53 + 1
// 9007199254740992

This problem is not unique to JavaScript, but is more obvious because all numbers are floating-point decimals. More information at IEEE 754 Double-Precision

Decimal and Binary are Different

Try the following in node

7 / 8
// 0.875
2 / 3
// 0.6666666666666666
7 / 9
// 0.7777777777777778

Why would 7 / 9 round up, but 2 / 3 not?

Some Decimals are Inaccurate

Try the following in node

0.1 + 0.2
// 0.30000000000000004

0.3 - 0.2 - 0.1
// -2.7755575615628914e-17

Why are these calculations inaccurate?

Optional Number Exercises