
I’m going around the world giving talks about Darwin , and usually what I’m talking about is Darwin’s strange inversion of reasoning . Now that title , that phrase , comes from a critic , an early critic , and this is a passage that I just love , and would like to read for you . " In the theory with which we have to deal , Absolute Ignorance is the artificer ; so that we may enunciate as the fundamental principle of the whole system , that , in order to make a perfect and beautiful machine , it is not requisite to know how to make it . This proposition will be found on careful examination , to express , in condensed form , the essential purport of the Theory , and to express in a few words all Mr. Darwin’s meaning ; who , by a strange inversion of reasoning , seems to think Absolute Ignorance fully qualified to take the place of Absolute Wisdom in the achievements of creative skill . " Exactly . Exactly . And it is a strange inversion . A creationist pamphlet has this wonderful page in it : " Test Two : Do you know of any building that didn’t have a builder ? Yes No. Do you know of any painting that didn’t have a painter ? Yes No. Do you know of any car that didn’t have a maker ? Yes No. If you answered " YES " for any of the above , give details . " A-ha ! I mean , it really is a strange inversion of reasoning . You would have thought it stands to reason that design requires an intelligent designer . But Darwin shows that it’s just false . Today , though , I’m going to talk about Darwin’s other strange inversion , which is equally puzzling at first , but in some ways just as important . It stands to reason that we love chocolate cake because it is sweet . Guys go for girls like this because they are sexy . We adore babies because they’re so cute . And , of course , we are amused by jokes because they are funny . This is all backwards . It is . And Darwin shows us why . Let’s start with sweet . Our sweet tooth is basically an evolved sugar detector , because sugar is high energy , and it’s just been wired up to the preferer , to put it very crudely , and that’s why we like sugar . Honey is sweet because we like it , not " we like it because honey is sweet . " There’s nothing intrinsically sweet about honey . If you looked at glucose molecules till you were blind , you wouldn’t see why they tasted sweet . You have to look in our brains to understand why they’re sweet . So if you think first there was sweetness , and then we evolved to like sweetness , you’ve got it backwards ; that’s just wrong . It’s the other way round . Sweetness was born with the wiring which evolved . And there’s nothing intrinsically sexy about these young ladies . And it’s a good thing that there isn’t , because of there were , then Mother Nature would have a problem : How on earth do you get chimps to mate ? Now you might think , ah , there’s a solution : hallucinations . That would be one way of doing it , but there’s a quicker way . Just wire the chimps up to love that look , and apparently they do . That’s all there is to it . Over six million years , we and the chimps evolved our different ways . We became bald-bodied , oddly enough ; for one reason or another , they didn’t . If we hadn’t , then probably this would be the height of sexiness . Our sweet tooth is an evolved and instinctual preference for high-energy food . It wasn’t designed for chocolate cake . Chocolate cake is a supernormal stimulus . The term is owed to Niko Tinbergen , who did his famous experiments with gulls , where he found that that orange spot on the gull’s beak -- if he made a bigger , oranger spot the gull chicks would peck at it even harder . It was a hyperstimulus for them , and they loved it . What we see with , say , chocolate cake is it’s a supernormal stimulus to tweak our design wiring . And there are lots of supernormal stimuli ; chocolate cake is one . There 's lots of supernormal stimuli for sexiness . And there 's even supernormal stimuli for cuteness . Here’s a pretty good example . It’s important that we love babies , and that we not be put off by , say , messy diapers . So babies have to attract our affection and our nurturing , and they do . And , by the way , a recent study shows that mothers prefer the smell of the dirty diapers of their own baby . So nature works on many levels here . But now , if babies didn’t look the way they do , if babies looked like this , that’s what we would find adorable , that’s what we would find -- we would think , oh my goodness , do I ever want to hug that . This is the strange inversion . Well now , finally what about funny . My answer is , it’s the same story , the same story . This is the hard one , the one that isn’t obvious . That’s why I leave it to the end . And I won’t be able to say too much about it . But you have to think evolutionarily , you have to think , what hard job that has to be done -- it’s dirty work , somebody’s got to do it -- is so important to give us such a powerful , inbuilt reward for it when we succeed . Now , I think we 've found the answer , I and a few of my colleagues . It’s a neural system that’s wired up to reward the brain for doing a grubby clerical job . Our bumper sticker for this view is that this is the joy of debugging . Now I’m not going to have time to spell it all out , but I’ll just say that only some kinds of debugging get the reward . And what we’re doing is we’re using humor as a sort of neuroscientific probe by switching humor on and off , by turning the knob on a joke -- now it’s not funny ... oh , now it’s funnier ... now we’ll turn a little bit more ... now it’s not funny -- in this way , we can actually learn something about the architecture of the brain , the functional architecture of the brain . Matthew Hurley is the first author of this . We call it the Hurley Model . He’s a computer scientist , Reginald Adams a psychologist , and there I am , and we’re putting this together into a book . Thank you very much . 