# Equality
Programmers frequently need to determine the equality of variables in relation to other variables. This is done using an equality operator.
The most basic equality operator is the `==` operator. This operator does everything it can to determine if two variables are equal, even if they are not of the same type.
For example, assume:
~~~
var foo = 42;
var bar = 42;
var baz = "42";
var qux = "life";
~~~
`foo == bar` will evaluate to `true` and `baz == qux` will evaluate to `false`, as one would expect. However, `foo == baz` will *also* evaluate to `true` despite `foo` and `baz` being different types. Behind the scenes the `==` equality operator attempts to force its operands to the same type before determining their equality. This is in contrast to the `===` equality operator.
The `===` equality operator determines that two variables are equal if they are of the same type *and* have the same value. With the same assumptions as before, this means that `foo === bar` will still evaluate to `true`, but `foo === baz` will now evaluate to `false`. `baz === qux` will still evaluate to `false`.
- Introduction
- Basics
- Comments
- Variables
- Types
- Equality
- Numbers
- Creation
- Basic Operators
- Advanced Operators
- Strings
- Creation
- Concatenation
- Length
- Conditional Logic
- If
- Else
- Comparators
- Concatenate
- Arrays
- Indices
- Length
- Loops
- For
- While
- Do...While
- Functions
- Declare
- Higher order
- Objects
- Creation
- Properties
- Mutable
- Reference
- Prototype
- Delete
- Enumeration
- Global footprint