# Tutorial

## Comparison Operators

Comparison and Logical operators are used to test for `true` or `false`

Comparison operators are used in logical statements to determine equality or difference between variables or values.

Given that `x = 5`, the table below explains the comparison operators:

Operator Description Example
`==` Equal to: `true` if the operands are equal `5==5; //true`
`!=` Not equal to: `true` if the operands are not equal `5!=5; //false`
`===` Strict equal to: `true` if the operands are equal and of the same type `5==='5'; //false`
`!==` Strict not equal to: `true` if the operands are equal but of different type or not equal at all `5!=='5'; //true`
`>` Greater than: `true` if the left operand is greater than the right operand `3>2; //true`
`>=` Greater than or equal to: `true` if the left operand is greater than or equal to the right operand `3>=3; //true`
`<` Less than: `true` if the left operand is less than the right operand `3<2; //false`
`<=` Less than or equal to: `true` if the left operand is less than or equal to the right operand `2<=2; //true`

## How Can it be Used

Comparison operators can be used in conditional statements to compare values and take action depending on the result:

if (age < 18) text = "Too young to buy alcohol";

## Logical Operators

Logical operators are used to determine the logic between variables or values.

Given that `x = 6` and `y = 3`, the table below explains the logical operators:

Operator Description Example
&& and (x < 10 && y > 1) is true
|| or (x == 5 || y == 5) is false
! not !(x == y) is true

## Conditional (Ternary) Operator

JavaScript also contains a conditional operator that assigns a value to a variable based on some condition.

Syntax:

variablename = (condition) ? value1:value2

## Comparing Different Types

Comparing data of different types may give unexpected results.

When comparing a string with a number, JavaScript will convert the string to a number when doing the comparison. An empty string converts to 0. A non-numeric string converts to `NaN` which is always `false`.

Case Value
2 < 12 true
2 < "12" true
2 < "John" false
2 > "John" false
2 == "John" false
"2" < "12" false
"2" > "12" true
"2" == "12" false

When comparing two strings, "2" will be greater than "12", because (alphabetically) 1 is less than 2.

To secure a proper result, variables should be converted to the proper type before comparison: