 Now we can also pass a whole function as an argument instead of just an argument with a value or using our ellipses To pass multiple ones to pass keyword arguments like this pass all function as an argument So let's have a function here and call it string under core func takes an argument, which I call s and What it does is it takes that value of s and puts it into this variable called string and then a prince I love string now. I have a second function called LUV and I'm not specifying anything in there. There's no argument specified there, but it just returns the string called Julia If I now call string funk and love so this LUV is a function So that is a function passed as a argument So when I call this function string funk, that's it up there. It's going to do that and It's going to look for what the argument was in this argument was love It'll then execute that love which is returns Julia Which is actually just putting Julia inside of the string of mine and if I print that string it should just say It should just say I love Julia and off we go. I love Julia So I've passed a function as an argument. We can also nest functions. Let's have a quick look at that So other than it just being an argument and a function I can put a function inside of a function So here we have our function called nest This is get there with our function called nest pass a single argument x and it takes whatever that value of x is Multiplies it by three puts in this computer variable z now There's another function which takes this value z and it also multiplies it by three And and then we just output this Inside nest z. So what's what's going to happen here? Let's just run this This is run this and pass nest 5 you see the answers 45. So what happened here? We called nest nest is up there It was 5 it multiplied 5 times e which is now 15 as a z and Then you see down here we call inside nest so This is just a function that has been declared here So it's not going to run that block of code of the function unless we call it So here we call it inside nest with z which is now 15 now runs this function and It takes that 15 as an argument multiplies it by 3 and we get out 45 hence we get the 45 So remember I can put a function inside of a function, but I'm just declaring that function It's not going to run automatically. I've got to call that function and as you can see we've called it after Declaring the function itself Next up we get to the heart of Functions in Julia and that is all about the methods that associate with a function and we're going to refer to the term multiple dispatch