Por que o NSDate não pode ser comparado usando <ou>?

NSDate *date = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];
NSLog([@"today is " stringByAppendingString:[dateFormat stringFromDate:date]]);
NSLog([@"firstBirthdayDate is " stringByAppendingString:[dateFormat stringFromDate:firstBirthdayDate]]);
NSLog([@"secondBirthdayDate is " stringByAppendingString:[dateFormat stringFromDate:secondBirthdayDate]]);
if ([firstBirthdayDate isEqualToDate:secondBirthdayDate])
    NSLog(@"First date is the same as second date");
if (firstBirthdayDate < date)
    NSLog(@"First date is earlier than today");
else
    NSLog(@"First date is later than today");

if (secondBirthdayDate < date)
    NSLog(@"Second date is earlier than today");
Hoje é dia 11/08/2012firstBirthdayDate&nbsp;é 23/01/2012secondBirthdayDate&nbsp;é 23/01/2012

Aqui está o que eu recebo no log:

A primeira data é a mesma que a segunda data

A primeira data é posterior a hoje

Segunda data é anterior a hoje

Acho que estou ficando louco...