@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.