Imagine you have an array named arr, and a number named n. You can use n and some arithmetic to access values of the array.
const arr = ['a', 'b', 'c'];
const n = 2;
arr[n] // same as arr[2], evaluates to 'c'
arr[n  1] // same as arr[1], evaluates to 'b'
arr[n  2] // same as arr[0], evaluates to 'a'
let say you called multiply([9,5,3],2)
//multiply first 2 elements => 9*5 =45
in first run of multiply
n!==0
so this will execute else statement
i.e. return multiply([9,5,3],1) * arr[1] //calls multiply again and wait for it to return
==================
A * 5

V
in second run of multiply
n!==0
so this will execute else statement
i.e. return multiply([9,5,3],0) * arr[0] //calls multiply again and wait for it to return
===================
B * 9

V
this time n==0
so this will return 1
now final answer is A*5
A = B*9
and B=1 > A=9
so the final return from multiply function will be 45 which is the answer