There are 15 frames with total animation cycle (all the frames) of 1.5 seconds. Each frame starts the animation with initial delay: the first frame has no delay, the second 0.1 seconds, the next 0.2 and so on. We set this by JavaScript.
Each frame is seen on the screen for 0.1 seconds from the total cycle of 1.5 seconds. This is done by setting the frame opacity, as specified in the @keyframes.
The animation uses steps. Thus, for example for the frame number 3 we define by JavaScript 'animation: animate 1.5s step-end 0.3s infinite;'