Morale is a protection for new players. It gets calculated from the points of attacker and defender. A player usually attacks with 100% morale, but if you attack a player that is much smaller than you, you will get a penalty. When morale is 45% your troops will only attack at 45% of their usual attack strength. If a smaller player attacks a much bigger player, there is no bonus on the attack. The maximum morale is 100%.
Time can also play a factor in morale calculation. By that it uses the time since the player joined the world. If a small player has been playing a world for a long time but still has a small amount of points, morale will continuously rise until it reaches 50%.
You can find a morale calculator in the simulator. Just add your target's points and your own points to get the morale. Not all worlds use morale, and morale settings can vary from world to world. The purpose of the morale is to protect active small players from the attacks of very strong players. If a very strong player attacks a very weak player, his troops fight with a lower level of efficiency, because many of his warriors refuse to follow these dishonorable commands, or simply underestimate the strength of the enemy.
Some faults have been found with the setup of Morale however. For instance - if a player has played for the same length of time as yourself, yet you have outgrown them as you are the better player, why must your troops suffer penalties as a result of this?
A large number of players believe that Morale penalties should be time based - at the end of the day it would simply become too difficult to put into play for certain situations. A player for instance who has played for 6 months on a world may be destroyed by the players around them. However, before they came down they conquered a village out on the rim. They now have one village like their neighbors, but huge Morale penalties. There are various other examples of how a time-based Morale would be unfair.