Damage = ((((2 * Level / 5 + 2) * AttackStat * AttackPower / DefenseStat) / 50) + 2) * STAB * Weakness/Resistance * RandomNumber / 100

Well, this is actually very simple. There is really no way to make it any simpler, but I'll explain it again. Level is the level of your Pokemon attacking. The 5 and 2 are already set numbers and are not changed. AttackStat is the attacking Pokemon's attack or special attack stat, according to whether the move being used is special or physical. AttackPower is the power of the attack being used, for example Solar Beam would be 120 and Air Slash would be 60. DefenseStat is simple the target's defense or special defense, according to whether the move is physical or special. STAB is the same type attack bonus, so if a Pokemon who is an electric type uses Thunder, which is an electric type move, they get a 1.5* bonus (Pokemon with the ability Adaptability get a 2* boost from their STABs). Weakness/Resistance is whether the move used is super effective or not very effective. Here's how it works.

Not very effective (4x) = x.25

Not very effective (2x) = x.5

Neutral = x1

Super effective (x2) = x2

Super effective (x4) = x4

So, if a Pokemon used tackle on an Aggron, it would be a *4 resistance because both rock and steel types resist normal. Simple enough? Next, RandomNumber is just a random number between 85 and 100, and is what makes each hit do a different amount of damage. And 100 is another set number.

Now, you can calculate damage just by filling in the words according to the info and plugging it in an online calculator. I'll do one as an example. Max attack Haxorus vs. a Max defense Skarmory using Outrage.

Damage = ((((2 * 100 / 5 + 2) * 432 * 120 / 416) / 50) + 2) * 1.5 * .5 * 100 / 100

So I plugged it, and I came up with 80.0076923077, and I did on the Showdown calculator and got 79. Close enough. And showdown also came up with 20.05 - 23.65% damage.

Hope I helped clear things up! :)