Sometimes if you haven't played that time control for a while, you will gain more or lose more
ELO Gain/Loss Calculation

There's a few rules for how Elo works:
1. If two players with a near equal Elo play together (ex. 630 v. 645), the winner gets 8 points; the loser loses 8; and if it's a draw, both players remain at their Elo.
2. If two players with a noticeable Elo difference play (ex. 1230 vs. 1390), the player with the higher elo will gain less points for winning and drop more points if they lose, and vice versa. A draw will also slightly increase the lower Elo while decreasing the higher one.
3. The way Elo for a draw is calculated is the number of points the lower elo player will get if they win, minus eight. So, if the lower Elo player would get ten points, a draw would award two points (and the higher elo would lose two).
4. (The one OP cares about) If a player is new or has not played in a very long time (that is, at least two or three months; however, it takes around five or six months before the difference becomes quite large), their Elo is considered "provisional" and and subject to larger increases and decreases until they begin to play regularly (or resume doing so).
I'm just curious about how it's determined how much ELO I'll gain or lose depending on if I win/draw/lose. I thought that If they have more ELO than I do that me winning will give me more ELO than if they had less. Same thing would go for if I had more ELO then I would gain a little bit for beating a weaker opponent. However, I've noticed in multiple games that when my opponent wins they're getting more ELO than I would have gotten if I had won. For example I had 637 and my opponent was 660. If I won I would have gained 12, but when they won they gained 23! Why are they earning more ELO for beating weaker players than the weaker player would if they beat the stronger player!?