# Operators

Operators are functions with specialized syntax for ease of use. They come in two forms: unary and binary.

## #

Unary OperatorsThere are only two unary operators in MistQL

Operator | Parameter Type | Return Type | Description |
---|---|---|---|

`!` | `Any` | `Boolean` | `false` if the argument is truthy, `true` otherwise |

`-` | `Number` | `Number` | Returns the negative of the number |

## #

Binary OperatorsBinary operators make up the vast majority of MistQL's operators.

Operator | Parameter Types | Return Type | Description |
---|---|---|---|

`+` | `number` or `string` or `array` | `number` or `string` or `array` | Adds two numbers, concatanates two strings, or concatanates two arrays, depending on argument type |

`-` | `number` | `number` | Subtracts one number from another |

`*` | `number` | `number` | Multiplies 2 numbers |

`/` | `number` | `number` | Divides one number by another |

`%` | `number` | `number` | Computes `a mod b` |

`<` | `number` , `string` , `boolean` or `null` | `boolean` | Less Than |

`>` | `number` , `string` , `boolean` or `null` | `boolean` | Greater Than |

`<=` | `number` , `string` , `boolean` or `null` | `boolean` | Less Than or Equal |

`>=` | `number` , `string` , `boolean` or `null` | `boolean` | Greater Than or Equal |

`==` | `any` | `boolean` | Whether two values are equivalent |

`!=` | `any` | `boolean` | Whether two values are not equivalent |

`=~` | `string` or `regex` | `boolean` | Whether the left hand value matches the right hand pattern. Alias for `match` . |

`&&` | `t` | `t` | Returns the first if the first is falsy, the second otherwiseotherwise. |

`\|\|` | `t` | `t` | Returns the first if the first is truthy, the second otherwise. NOTE: The backslashes aren't necessary. I just can't figure out how to format it properly for Docusaurus. |

## #

Operator precedence and associativityBelow are in order from highest to lowest, where all operators on the same level are equal precedence.

Operator | Associativity |
---|---|

`.` | ltr |

unary `!` , unary `-` | rtl |

`*` , `/` , `%` | ltr |

`+` , `-` | ltr |

`<` , `>` , `<=` , `>=` | ltr |

`==` , `!=` , `=~` | ltr |

`&&` | ltr |

`\|\|` | ltr |

`[function application]` | ltr |

`\|` | ltr |