# Operators#

## Add#

The **Add** block is used to add any two values together and reports the sum.

The **Add** block can accept decimals, integers, or numeric blocks.

The **Add** block fits in blocks that accept circular spaces, and can accept other circular blocks in it as well.

In this example, the 123 Robot will move forward for 30 mm.

## Subtract#

The **Subtract** block is used to subtract one value from another and reports the difference.

The **Subtract** block can accept decimals, integers, or numeric blocks.

The **Subtract** block fits in blocks that accept circular spaces, and can accept other circular blocks in it as well.

In this example, the 123 Robot will move forward for 20 mm.

## Multiply#

The **Multiply** block is used to multiply any two values together and reports the product.

The **Multiply** block can accept decimals, integers, or numeric blocks.

The **Multiply** block fits in blocks that accept circular spaces, and can accept other circular blocks in it as well.

In this example, the 123 Robot will move forward for 20 mm.

## Divide#

The **Divide** block is used to divide the first value by the second value and reports the dividend.

The **Divide** block can accept decimals, integers, or numeric blocks.

The **Divide** block fits in blocks that accept circular spaces, and can accept other circular blocks in it as well.

In this example, the 123 Robot will move forward for 20 mm.

## Random#

The **Random** block is used to report a random value between the lowest and highest values in the block.

The **Random** block can accept decimals, integers, or numeric blocks.

In this example, the 123 Robot will move forward for a random distance between 10 and 30 mm.

## Greater than#

The **Greater than** block is used to report if the first value is larger (greater) than the second value.

The **Greater than** block can accept decimals, integers, or numeric blocks.

The **Greater than** block reports `True`

when the first value is larger than the second value and `False`

when the first value is smaller than or equal to the second value.

The **Greater than** Boolean block reports a true or false value and fits in blocks with hexagonal (six-sided) spaces.

In this example, the 123 Robot will move in forward for 3 steps, because `50 > 0`

returns `True`

.

## Less than#

The **Less than** block is used to report if the first value is less (smaller) than the second value.

The **Less than** block can accept decimals, integers, or numeric blocks.

The **Less than** block reports `True`

when the first value is smaller than the second value and reports `False`

when the first value is greater than or equal to the second value.

The **Less than** Boolean block reports a true or false value and fits in blocks with hexagonal (six-sided) spaces.

In this example, the 123 Robot will move forward for 20 mm, because `0 < 50`

returns `True`

.

## Equal to#

The **Equal to** block is used to report if the first value is the same as, or equal to, the second value.

The **Equal to** block can accept decimals, integers, or numeric blocks.

The **Equal to** block reports `True`

when the two values are exactly the same and reports `False`

when the two values are not the same.

The **Equal to** Boolean block reports a true or false value and fits in blocks with hexagonal (six-sided) spaces.

In this example, the 123 Robot will move forward for 20 mm, because `20 = 20`

returns `True`

.

## And#

The **And** block is used to report if two Boolean conditions are both true.

The **And** block reports `True`

when both conditions are true and reports `False`

when one, or both, of the conditions are false.

The **And** Boolean block reports a true or false value and fits in blocks with hexagonal (six-sided) spaces.

In this example, if the Eye Sensor detects a red object and the 123 Robot is moving at the same time, the 123 Robot will stop moving. Otherwise, the 123 Robot will keep moving forward.

## Or#

The **Or** block is used to report if one of two Boolean conditions are true.

The **Or** block reports `True`

when one (or both) of the conditions are true and reports `False`

when both of the conditions are false.

The **Or** Boolean block reports a true or false value and fits in blocks with hexagonal (six-sided) spaces.

In this example, if the Eye Sensor detects a red or green object, the 123 Robot will stop. Otherwise, the 123 Robot will keep moving forward.

## Not#

The **Not** block is used to report the opposite (inverse) of the reported Boolean value.

The **Not** block reports `True`

when the Boolean block inside reports false and reports `False`

when the Boolean block inside reports true.

The **Not** Boolean block reports a true or false value and fits in blocks with hexagonal (six-sided) spaces.

In this example, if the Eye Sensor detects a red object and the 123 Robot is moving at the same time, the 123 Robot will stop moving. Otherwise, the 123 Robot will keep moving forward. The **Not** block is used to check if the 123 Robot is moving, by saying when the 123 Robot is **Not** done driving.

## Round#

The **Round** block is used to round the inputted value to the nearest integer.

The **Round** block can accept decimals, integers, or numeric blocks.

Decimals that are 0.5 or greater round up and decimals less than 0.5 round down.

The **Round** block fits in blocks that accept circular spaces, and can accept circular blocks in them as well.

In this example, the 123 Robot will move forward for the rounded number of 20 mm.

## Function#

The **Function** block is used to perform a selected math function.

The **Function** block can accept decimals, integers, or numeric blocks.

The available functions are:

abs - absolute value

floor - rounds down to the nearest integer

ceiling - rounds up to the nearest integer

sqrt - square root

sin - sine

cos - cosine

tan - tangent

asin - arcsine or the inverse of sine

acos - arccosine or the inverse of cosine

atan - arctan or the inverse of tangent

ln - the natural logarithm base e

log - logarithm base 10

e ^ - powers of e

10 ^ - powers of 10

The **Function** block fits in blocks that accept circular spaces, and can accept circular blocks in them as well.

In this example, the 123 Robot will move forward for 20 mm.

## Remainder#

The **Remainder** block is used to divide the first value by the second value and report the remainder.

The **Remainder** block can accept decimals, integers, or numeric blocks.

Numbers that divide evenly will report a remainder of zero.

The **Remainder** block fits in blocks that accept circular spaces, and can accept circular blocks in them as well.

In this example, the 123 Robot will move forward for 20 mm.