@ayanda so this function is just doing the same thing as the recursive function in the other post I answered, except using a loop instead of a recursive function. In this case:
We give the fact variable a starting value of 1
the loop starts to run, and will keep running until the num value is no longer bigger than 0
On each loop iteration, the fact value is set to fact's existing value, multiplied by the current value of num
num then has 1 subtracted from its value
When num's value gets to below 1, the loop stops running, and the final value of fact is returned.
So if we run factorial(4):
The starting value of num is 4, and the starting value of fact is 1.
After the first iteration of the loop, num is 3 (4 - 1) and fact is 4 (1 * 4).
After the second iteration of the loop, num is 2 (3 - 1) and fact is 12 (4 * 3).
After the third iteration of the loop, num is 1 (2 - 1) and fact is 24 (12 * 2).
After the fourth iteration of the loop, num is 0 (1 - 1) and fact is 24 (24 * 1).
The loop then stops running because num is no longer more than 0, and the final fact value of 24 is returned.