# Expressions

Most Actions and Triggers can accept a math expression and the result of that expression will be used.

Use Math.js Syntax for writing an expression.

## Basic Algebra and Randomization

The expression can contain XToys variables and math equations. It can also generate random numbers.

**{myvar}**- XToys variables**+10, -1**- A number with + or - will increment the existing number**(20|40|60|80|100)**,**(1|1|1|2|3)**- A random value from a list by | separating the values within ( ) brackets. The same value can be entered multiple times to change the likelyhood certain values will be chosen.**(1-5)**- A random number from a range by putting the range in ( ) brackets.

## Math.js Functions

Any functions available in Math.js can be called in an expression (do not include the '*math.*').

## Other Functions

XToys has a few pre-defined functions:

**gpsDistance(lat1,lng2,lat2,lng2)**- Returns the distance in meters between the two given GPS coordinates. Lat/lng values should be in decimal degrees and without N/E/S/W designators.**getSeconds(timestamp)**- Returns the number of seconds (0-59) according to local time**getMinutes(timestamp)**- Returns the number of minutes (0-59) according to local time**getHours(timestamp)**- Returns the number of hours (0-23) according to local time

## Define Additional Functions

Additional functions can be defined by clicking the Custom JavaScript button in the top toolbar. Any functions defined in JavaScript that return a number or string can be called within the expression.