What does self.smooth do in SmoothenValue?

I found there is a class in fastai codebase called SmoothenValue:

class SmoothenValue():
    "Create a smooth moving average for a value (loss, etc) using `beta`."
    def __init__(self, beta:float):
        self.beta,self.n,self.mov_avg = beta,0,0

    def add_value(self, val:float)->None:
        "Add `val` to calculate updated smoothed value."
        self.n += 1
        self.mov_avg = self.beta * self.mov_avg + (1 - self.beta) * val
        self.smooth = self.mov_avg / (1 - self.beta ** self.n)

while I understand that self.mov_avg is the (exponentially weighted) moving average, I am not clear what self.smooth is actually doing…

Isn’t the moving average itself is already smooth? why is self.smooth applied again to smooth it out?