## Values

A VALUE is a location in computer memory that stores DATA.

There are many kinds of values, including String, Number, Array, Object, and more.

The different kinds of values are called TYPES

## Numbers

A number is what it sounds like -- any integer or decimal.

``````10
-12
3.14
``````

## Lab: Playing with Numbers

Open up a node environment in your terminal (`node` Enter). Once you're in the node environment you should be able to write javascript, and run it inside your terminal. Try out the following equations:

• Add two numbers together with the `+` operator
• Multiply two numbers with the `*` operator
• Divide two numbers using the `/` operator
• Square a number by raising it to the power of 2 `**2`
• Create a more complex mathematical equation. Useing amixture of different operators
• Bonus: Weird math! Try the following equations:
• `0.1 + 0.2`, `2**53` and `2**53 + 1`, and `Infinity - Infinity`

What have you noticed about math in JavaScript

## Strings

A string is an object that's a collection of characters, like a word or a sentence.

``````'apple'
'banana'
'Cherry Pie'
``````

## String Slicing

You can extract sub-parts of a string using `slice`

``````// "slice from character 0 to character 4"
"blueberry".slice(0, 4)

// "slice from character 4 to the end
"blueberry".slice(4)
``````

The first number is which character to start from.

The second number is which character to end on.

MDN: slice

## String Indexing

Indexes are the positions of characters within a String.

``````| B | L | U | E | B | E | R | R | Y |
0   1   2   3   4   5   6   7   8   9
``````

Then `'blueberry'.slice(0, 4)`

• Includes the characters to the right of the start index
• Includes the characters to the left of the end index
• And excludes the character to the right of the end index

Experiment with different start and end values in the console.

## Lab: Playing with Strings

Either open a terminal, and run `node`, or create a new JavaScript file in a text editor.

Complete the following challenges

• Add two strings together with the same type of quotes

e.g. `'Java' + 'Script'`

• Add two strings together with different types of quotes

e.g. `"I'm double quoted!" + 'I am single quoted.'`

• Subtract two strings

e.g. `'cats' - 'dogs'`

• Add a string to a number

• Try to put more quotes inside your a string's quotes?

## Booleans

A Boolean is a value that is either TRUE or FALSE, and are represented with the values `true` and `false`

Created by George Boole, a mathematician who invented Boolean algebra.)

## Booleans and Conditionals

A conditional starts with the keyword `if` followed by a test in parentheses `if (10 > 5)`, followed by a block of code defined by curly braces which runs if the check evaluates to `true`.

## Lab: Is it True?

Given the conditional answer the following questions.

``````if (someValueHere) {
console.log('It is truthy');
}
``````
• Is the boolean `true` truthy?
• how about `false`?
• Try replacing `true` with a string
• Is it truthy?
• Try replacing `true` with a number
• Is it true?
• What about the number `0`?
• Try replacing `true` with the expression `1 < 2`
• What happens if you switch the operator like so `1 > 2`?

## Operators

Values can be combined or manipulated using operators

• PLUS (`+`)
• TIMES (`*`)
• POWER (`**`)
• DOT (`.`)
• ASSIGNMENT (`=`)
• COMPARISON (`===`)

An operator sends a message to the value

• e.g. `1 + 2` sends the number `1` the message `please add 2 to yourself`.

The DOT operator `.`, is a special operator that can send any message

Two slashes in a row means everything after these slashes is a comment.

``````2 + 2 // returns 4
``````

JavaScript ignores everything to the right of the comment

Allowing for an explanation of what the nearby code does, or why it does it.

``````(2 + 2) * 3 // first add, then muliply
``````
``````/*
This is a
multi-line
comment
*/
console.log(x /*some variable from earlier*/);
``````

## Expression Evaluation

Code that results in a value is called an EXPRESSION

When JavaScript encounters an expression, it evaluates it. Evaluates means, to convert to a value.

Complex expressions with values and operators apply the operators until it results in a single value.

``````2 + 2 * 3 // Question: What is 2 + 2 * 3?
``````
``````// Question: What is the uppercase version of 'apple'?
'apple'.toUpperCase()
``````let product = 4 * 4; // product is 16