## You Spin Me Round ### Functions Functions in JS allows you to describe multiple `instructions`, in other words, it's a way to execute code inside your code ! That seems pretty complicated but it is the building block of your programs. You already have been using a `function` as `console.log` is one ! You can easly spot them because we stick parens after their identifiers `()`. For example, here's a **function call**: ```js // ↙ identifier, like variables console.log('Hello There !') // ↖ open paren + argument + close paren ``` #### Function name (`identifier` or `property.key`) The first things that appears in a function is the `identifier`, in fact, in JS, functions are values of type `function`. This means that in order to be used a function **must** be either assigned to: - a variable - or an object property #### Function calling Functions **do** something, and they can **return a result**, a value. `console.log` does not return a value, but it will do something: make its arguments appear in the console. To `call` the function, in other word run it, we need too add `()`. ```js console.log // function is not used, nothing happen console.log() // function was called ! an empty line appear in the console console.log(4) // function was called with 4 and it appears in the console ``` #### Function `arguments` So in that last example, number `4` was the argument of the `console.log` function. A function will execute the same code on different arguments, making them flexible. > Sometimes, `arguments` are named `parameters`. We just like to use 10 > different names for everything to sound _"smart"_. JS gives you plenty of readymade functions, for now we are going to focus on `Math` functions. #### function `return values` All functions from the JS `Math` object do nothing other than compute a new value from its argument. For example, the well named `Math.round` function will take a number as argument and returns the rounded value of this number. To use return values, assign them to `variables`: ```js let roundedValue = Math.round(1.8) // Here we assign the result of the function call console.log(roundedValue) // 2 ``` The variable `roundedValue` value is the number `2`, the result of the function call. #### Nested function calls It is also possible to use the return value of a function directly without using an intermediary variable.\ For example we could have written: ```js console.log(Math.round(3.2)) // double functions call !!!! woaaaa ``` Here we first call `Math.round(3.2)` which returns the number `3` and that will be passed to `console.log` that will procede to display it. ### Instructions We have prepared a variable `num`. Just as a warm up, use this variable `num` as `argument` of some `Math` functions. - Declare a `rounded` variable of `num` rounded value. - Declare a `truncated` variable of `num` truncated value. One of the necessary Math function is already used in the lessons examples before the instructions. Explore the link below to see which others functions the Math object contains in order to find what you need to complete this exercise. ### Notions - [Math](https://devdocs.io/javascript/global_objects/math)