By the end of this lesson you should be able to...
Define and describe the purpose of a REPL
Understand the very basics of programming
Evaluate expressions using booleans and arithmetic operators
The REPL
Arithmetic Operators
Comparison Operators
Logical Operators
Logic Problems
The REPL
Arithmetic Operators
Comparison Operators
Logical Operators
Logic Problems
READ
EVAL
LOOP
read input from the keyboard
evaluates the code that it reads
run the previous commands until termination
formats and displays the results
wes:~/ $ node
> 10 + 90;
100Run a REPL w/Node
wes:src/ $ node ./example.js
done.
wes:src/ $Run a file w/Node
CTRL + D to Quit
or
CTRL + C twice
CTRL + C to cancel
The REPL
Arithmetic Operators
Comparison Operators
Logical Operators
Logic Problems
wes:~/ $ node
> 3 + 3
6
> 6 - 4
2
> 12 / 2
6
> 3 * 11
33wes:~/ $ node
> 3 + 3 + 3
9
> 3 * 4 + 5
17
> 3 * (4 + 5)
27
> (9 / 3) * (4 + 5)
27The Basics
Chaining & Precedence
wes:~/ $ node
> 10 / 2
5
> 10 % 2
0
> 10 / 3
3.3333333333333335
> 10 % 3
1wes:~/ $ node
> 10 / 3
3.3333333333333335
> Math.ceil(10 / 3)
4
> Math.floor(10 / 3)
3
> Math.round(10 / 3)
3Modulo (%)
Rounding Up & Down
The REPL
Arithmetic Operators
Comparison Operators
Logical Operators
Logic Problems
wes:~/ $ node
> 3 > 1
true
> 1 < 10
true
> 12 > 21
false
> 13 < 3
falsewes:~/ $ node
> 3 >= 3
true
> 3 >= 4
false
> 3 <= 3
true
> 3 <= 2
falseThe Basics
Compare or Equivalent
wes:~/ $ node
> 3 >= ( 4 - 1 )
> 10 <= ( 100 / 20 )
> ( 10 - (15 / 3) + 10 ) > ( 11 * (11 + 2) )
> ( 11 - 1 / 1 ) < ( 100 / ( (25 / 5) + 5 ))
Chaining & Precedence
truefalsefalsefalsewes:~/ $ node
> 10 === 10
true
> 10 === 1
false
> "ABC" === "abc"
false
> "abc" === "abc"
truewes:~/ $ node
> 3 !== 3
false
> 3 !== 13
true
> "abc" !== "ABC"
true
> "abc" !== "abc"
falseEquivalency
Not Equivalent (Bang!)
Actually a Logical Operator
wes:~/ $ node
> 3 == 3
> 3 != 3
> 3 == "3"
> 3 != "3"
wes:~/ $ node
> true === "true"
> true == "true"
> 1 == "true"
> 1 == true
Evil, Evil "=="
Like, seriously?
truefalsetruefalsefalsefalsefalsetrue"==" attempts to coerce types, sometimes, maybe, if it feels like it
The REPL
Arithmetic Operators
Comparison Operators
Logical Operators
Logic Problems
Logical Operators allow us to check for validity of a statement
For example, is the following statement
true or false:
I am both a student in class and not a student in class
wes:~/ $ node
> true && true
true
> true && false
false
> false && false
false
> false && true
falsewes:~/ $ node
> true || true
true
> true || false
true
> false || true
true
> false || false
falseThe Basics of And (&&)
The Basics of Or (||)
The last two evaluates slightly faster because of Short-Circuit Evaluation
The first two evaluate slightly faster because of Short-Circuit Evaluation
wes:~/ $ node
> ( 3 > 2 ) || false
> ( 3 !== "3" ) && ( 10 < 25 )
> ( 1 !== 0 ) && ( 10 % 3 > 2 )
> true === !( (11 - 1 / 2) > 11 )
Numbers, Chaining, and Bang
truetruetruefalsewes:~/ $ node
> 1 == true
true
> "" == false
true
> 0 == false
true
> !true === false
truewes:~/ $ node
> !!0
false
> !!""
false
> !!" "
true
> !!1
true...?
Truthiness & Falseness
All types have inherent truthiness or falseness, which you can check with "!!"
The REPL
Arithmetic Operators
Comparison Operators
Logical Operators
Logic Problems
wes:~/ $ node
> false || !!false || !false
> true && !( 10 > 10 ) && !( 10 % 2 )
> ( 11 - 9 ) && !( "3" !== "3" ) && !!1024
> (!!0 || !!"" || !!false) === !!0
> !( 100 * (10 % 5) ) || !( (3 !== "3") && !(false) )
> !"user is not signed up" &&
... !!"wants to purchase" ||
... !!"can receive a free trial"
truetruetruetruetruetrueCreate 5 logic puzzles on your own and then trade them with a neighbor
Try your best to stump them and don't evaluate them with the console!