# Data Types

###### The basic types of data in JavaScript

**
Resources:
**

All data in computers can be reduced to bits, positive/negative charges expressed as ones and zeros.

In JavaScript, groups of bits are represented as *values.* You create them by simply invoking their name. There’s several types:

**Numbers,**which can be whole, negative, and decimal values. Their main benefit is using arithmetic operations to calculate new numbers.- The
*remainder*operator returns the leftover value after division.`314 % 100`

returns`14`

, and`100 % 10`

returns`0`

. `NaN`

is returned after any operation that doesn’t return a real result.`0 / 0`

will return`NaN`

, as well as`Infinity - Infinity`

.

- The
**Strings**are basic text enclosed by matching quotes.- Quotes or other special characters inside a string need to be
*escaped*with a backslash.- Quotes:
`"\'It is a dangerous journey,\' the main said."`

- New Lines:
`"This is the first line\nAnd this is the second"`

- String with backticks can include functions or operations, if they’re enclosed in a
`${}`

wrapper.

- Quotes:

- Quotes or other special characters inside a string need to be
**Unary Operators**are symbols written as words`typeof`

tells you a value’s type, so`typeof 4.5`

returns`number`

.

**Boolean**values are simply true or false- You can use
*comparison values*that return boolean values, such as`3 > 2`

returning`true`

. - Logical operators such as
`&&`

and`||`

also return boolean values. - The
*negative*operator flips an integer, so`- 5`

returns`-5`

. - The
*not*operator flips the boolean value on it, so`!true`

returns`false`

. - Ternary operators evaluate an expression and can return different values if it’s
`true`

or`false`

. So`true ? 1 : 2`

returns`1`

, but if it was false it would return`2`

.

- You can use
**Empty Values**show a lack of meaningful values or info. If a value must be returned but none is produced, you get an empty value.- These can be either
`null`

or`undefined`

, and they’re mostly the same.

- These can be either

**Type Coercion** is when operators are applied to the wrong value types and quickly convert the value to what is needed, such as converting `"5"`

from a string to `5`

as an integer. To test for any unexpected type conversions or missing values, use the `===`

and `!==`

comparison operators.